Skip to content

Add complete Paperless NGX community app guide#407

Open
grizzlechips wants to merge 72 commits intounraid:mainfrom
grizzlechips:community-app-guides
Open

Add complete Paperless NGX community app guide#407
grizzlechips wants to merge 72 commits intounraid:mainfrom
grizzlechips:community-app-guides

Conversation

@grizzlechips
Copy link
Copy Markdown
Contributor

@grizzlechips grizzlechips commented Feb 13, 2026

Summary

  • Add a dedicated Community App Guides section with its own docs plugin, navbar link, and sidebar.
  • Add the full Paperless NGX guide (core setup, office documents/tags/email, and local AI) with all referenced screenshots.
  • Cross-link the guide to existing Unraid documentation (shares, cache pools, parity, Docker, Tailscale, terminal, network settings, etc.).
  • Align UI styling (bolded tabs, buttons, navigation paths) with existing Unraid docs conventions.

Testing

  • Verified MDX formatting and that every image reference in the guide has a corresponding file in the repository.

Summary by CodeRabbit

  • New Features

    • Community App Guides section and a Paperless NGX deployment guide; responsive feedback widget and improved embedded media component.
  • Documentation

    • Replaced “flash device” wording with “boot device” across docs; added Internal Boot and TPM Licensing FAQs, release notes, and many how‑to guides.
  • Build & Infrastructure

    • Dev tooling moved to pnpm, dev server defaults to port 3001, and Node engine constraints relaxed to 22+. Improved sitemap/metadata and search reindex workflow.

grizzlechips and others added 30 commits October 14, 2025 16:18
… notification icons

- Expand notification settings documentation with detailed configuration options:
  * Add comprehensive display/behavior settings, notification types, and delivery methods
  * Include step-by-step SMTP configuration with Gmail app password setup
  * Add detailed notification agent setup with icons for 13+ services (Discord, Slack, Telegram, etc.)
- Significantly expand VM setup documentation with new Unraid 7.x features:
  * Add comprehensive VM snapshot management (create, revert, block commit/pull)
  * Include detailed troubleshooting sections and storage considerations
  * Expand GPU passthrough and PCI device binding documentation
- Enhance system administration guides with detailed upgrade/downgrade procedures:
  * Add a comprehensive downgrade process via the Downgrade OS tool
  * Include post-downgrade verification and troubleshooting sections
  * Add warnings about ZFS compatibility and plugin issues
- Add Creative Commons license information to the footer configuration
- Include 20+ notification service icons (Discord, Slack, Telegram, Pushover, etc.)
- Update Docker guide image and other visual assets
- Clarify WebGUI downgrade tool scope in upgrading-unraid.mdx
- Fix broken snapshot link and list formatting in vm-setup.mdx
- Correct Parity 2 technical description (Reed-Solomon Q-parity) in array-configuration.mdx
- Fix compound adjective hyphenation (XFS‑formatted)
- Remove redundant wording and incorrect "Sync" button reference in rebuild steps
- Standardize formatting and cross-references in tailscale.mdx
Correct inaccurate "Memory dump" checkbox description - it's not preselected by default. Replace alarmist "permanent crash state" language with accurate explanation of memory-backed vs disk-only snapshots and their trade-offs.
- Fix inconsistent vDisk storage paths in VM conversion docs (use /mnt/user/ instead of /mnt/cache/)
- Correct IDE vs SATA bus guidance to change both bus and dev attributes
- Replace Force stop recommendation with safer Stop/normal shutdown guidance
- Organize notification agent icons in dedicated static directory structure
- Fix incorrect rebuild instruction (change "Sync" to "Start" button guidance)
Address critical feedback about content hidden behind tabbed/collapsible elements by reorganizing content as inline sections while maintaining clean layouts.

**FAQ & Licensing FAQ:**
- Improve anchor linking with heading structure (unique shareable links without cluttering TOC)
- Flatten all questions for immediate accessibility
- Verify all anchors work correctly

**Array Configuration:**
- Split monolithic 1,160+ line page into 5 focused pages: Overview, Adding disks, Replacing disks, Removing disks, Health & maintenance
- Flatten content from tabs/expandables to inline sections
- Retain version-specific tabs only
- Update links and redirects for new structure

**File Systems:**
- Add Unraid 7.2 filesystem content (EXT4, NTFS, exFAT)
- Add filesystem comparison table at top of page
- Remove tab UI for filesystem introductions
- Retain CLI-specific tabs for file system checks/repairs
- Consolidate redundant partial files (btrfs/xfs/zfs intro, balance/scrub partials)
- Add cross-reference link to ZFS storage page

**Shares:**
- Convert configurable option tabs to inline sections with descriptive headers
- Move "Transferring files from network share" to CLI page (per feedback)
- Retain version-specific tabs for 6.12+ vs 6.11 differences
- Update links for new content location

**Cache Pools:**
- Remove tab UI, convert to inline sections
- Delete "Backing up cache pool" section (redundant with move operations, per feedback)
- Retain version-specific guidance as inline notes
- Improve content flow with clear section headers

**Unclean Shutdowns:**
- Flatten tabbed VM configuration to inline sections
- Expand Windows VM configuration with detailed step-by-step instructions
- Add comprehensive timeout configuration tables
- Enhance shutdown sequence explanations

**Additional improvements:**
- Improve CLI documentation with network file transfer section
- Enhance VM setup documentation accessibility
- Update Apple Time Machine style/formatting
- Add ZFS storage cross-references
- Apply CodeRabbit configuration file improvements
- Reduce excessive bold text across pages for better visual hierarchy (maintain content substance)
- Changed import path for sidebar sorting utility from `sitebar-semver-sort.js` to `sidebar-semver-sort.js`.
- Removed outdated `sitebar-semver-sort` TypeScript definition and JavaScript implementation.
- Updated various documentation files for consistency, including fixing minor grammatical issues and improving formatting for better readability.
- Adjusted links in the Docusaurus configuration to point to the new overview page for managing storage arrays.
- Changed the maximum heading level for the table of contents from 2 to 3 to improve navigation.
- Removed the outdated index section to streamline the FAQ content and enhance readability.
…bility

- Changed table of contents maximum heading level from 2 to 3 for better organization.
- Removed outdated index sections from the FAQ to streamline content and enhance user experience.
- Improved overall clarity and accessibility of the FAQ and Licensing FAQ sections.
- Removed outdated redirect entries in docusaurus.config.ts for clarity.
- Enhanced API documentation with consistent formatting and improved readability across multiple files.
- Updated CLI and API key management guides to reflect best practices and streamline user experience.
- Improved overall structure and accessibility of various documentation sections, including OIDC provider setup and array management.
- Minor editorial fixes and adjustments to ensure consistency in terminology and formatting.
- Updated redirect paths in docusaurus.config.ts to point to the new overview page for array management.
- Improved API documentation formatting and consistency across multiple files.
- Adjusted image paths in ZFS storage documentation to reference the correct assets folder.
- Added markdown linting comments for better formatting in various Docker container management guides.
- Removed outdated images related to ZFS storage to clean up the repository.
- Adjusted image paths in the ZFS storage documentation across multiple languages to reference the correct assets folder.
- Ensured consistency in image references for better accessibility and organization of documentation.
- Corrected formatting of the eMMC support section in the release notes.
- Ensured consistent use of backslashes in configuration options for clarity.
- Changed the tagline in docusaurus.config.ts for clarity.
- Updated favicon path to use .ico format.
- Ensured consistent use of backslashes in release notes for package versions.
- Standardized section headings for consistency across various settings pages.
- Added detailed instructions for WiFi setup, including initial requirements and limitations.
- Enhanced RAIDZ expansion documentation with step-by-step guidance and important notes.
- Clarified BTRFS and ZFS pool management instructions, including adding disks and changing RAID levels.
- Improved formatting and readability throughout the documentation for better user experience.
- Replaced outdated image reference in the ZFS storage documentation with a new image for improved clarity and accuracy.
- Updated Node.js version in .nvmrc to 24.11.1 for compatibility.
- Added 'i18n/' to .remarkignore to exclude internationalization files from linting.
- Integrated remarkComment plugin into .remarkrc.mjs for enhanced comment handling.
- Adjusted docusaurus.config.ts to include markdown hooks for broken link warnings.
- Updated package dependencies to latest versions for improved performance and security.
- Fixed sidebar sorting logic to sort items in descending order.
- Updated GitHub Actions workflows to use the latest setup-node action and improved error handling for linting.
- Enhanced various documentation files for clarity, including API usage, licensing FAQs, and troubleshooting guides.
- Removed outdated references and improved formatting across multiple language files.
…mentation

- Moved markdown hooks under customFields in docusaurus.config.ts for better organization.
- Revised the licensing FAQ to clarify installation methods for license key files, including detailed steps for WebGUI, network share, and USB flash drive installations, enhancing user guidance and accessibility.
- Moved markdown hooks directly under the markdown key for improved clarity and organization, removing the unnecessary customFields wrapper.
ljm42 and others added 21 commits March 31, 2026 22:00
## Summary
- Move the two most common internal-boot troubleshooting questions to
the top of the Internal Boot FAQ.
- Tighten FAQ wording, including UEFI boot-order guidance and Secure
Boot remediation language.
- Replace duplicated troubleshooting bullets in the onboarding flow with
a link to the Internal Boot FAQ.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Consolidated and reorganized setup troubleshooting content for
improved guidance and discoverability
  * Enhanced guidance on BIOS/UEFI boot order and Secure Boot handling
* Clarified attached device count rules and that licensing works
regardless of boot method
* Restructured Internal Boot and TPM FAQs for clearer, reordered answers
and improved in-page navigation/anchors
  * Minor formatting tweaks for clearer UI breadcrumb emphasis
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Before Submitting This PR, Please Ensure You Have Completed The
Following:

1. [ ] Are internal links to wiki documents using [relative file
links](https://docusaurus.io/docs/markdown-features/links)?
2. [ ] Are all new documentation files lowercase, with dash separated
names (ex. unraid-os.mdx)?
3. [ ] Are all assets (images, etc), located in an assets/ subfolder
next to the .md/mdx files?
4. [ ] Have you checked to ensure there aren't other open [Pull
Requests](../../../pulls) for the same update/change?
5. [ ] Is the build succeeding?


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Added video walkthroughs (step-by-step videos) for setting up and
converting to internal boot, including embedded videos and external
links.
* Updated 7.3.0 release notes to call out two known issues:
non-encrypted XFS pools may fail to mount, and formatting XFS on 4Kn
drives can cause newly formatted volumes not to mount after fixes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
- also fix some SSR issues

Before Submitting This PR, Please Ensure You Have Completed The
Following:

1. [ ] Are internal links to wiki documents using [relative file
links](https://docusaurus.io/docs/markdown-features/links)?
2. [ ] Are all new documentation files lowercase, with dash separated
names (ex. unraid-os.mdx)?
3. [ ] Are all assets (images, etc), located in an assets/ subfolder
next to the .md/mdx files?
4. [ ] Have you checked to ensure there aren't other open [Pull
Requests](../../../pulls) for the same update/change?
5. [ ] Is the build succeeding?


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Responsive video embed component for optimized viewing across screen
sizes.
  * Variable font added and global typography enhancements.
* Improved theme persistence and synchronization across embedded content
and iframes.

* **Documentation**
  * Development setup updated to use pnpm and Node 22+.
* Embedded instructional videos standardized and updated across
languages.

* **Chores**
* CI workflow and local scripts switched to pnpm; workspace and ignore
rules updated.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- replace several default Docusaurus theme icons with Tabler-based
overrides and update the iframe back arrow
- refine dark theme, footer, and DocSearch styling to better match the
Unraid docs look and update the dark theme-color metadata
- render footer copyright years dynamically across localized footers and
ignore the local `.gstack/` directory

## Testing
- `pnpm run test:run`
- `pnpm run lint`
- passes, but Docusaurus reports pre-existing broken links to `warn/` in
translated pages and one pre-existing broken anchor under SMART reports

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Many new UI icons with a unified icon wrapper; dynamic footer shows
the current year; new floating feedback widget; responsive embed accepts
optional class overrides.

* **Style**
* Dark-mode meta/color tweak and refined menu/dropdown caret and
search/external-link visuals; several theme CSS improvements for visual
consistency.

* **Chores**
  * Added Tabler Icons React package; updated ignore rules.

* **Documentation**
  * Added validation guidance file.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…#408)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@tsconfig/docusaurus](https://redirect.github.com/tsconfig/bases)
([source](https://redirect.github.com/tsconfig/bases/tree/HEAD/bases)) |
[`^2.0.7` →
`^2.0.9`](https://renovatebot.com/diffs/npm/@tsconfig%2fdocusaurus/2.0.9/2.0.9)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@tsconfig%2fdocusaurus/2.0.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tsconfig%2fdocusaurus/2.0.9/2.0.9?slim=true)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/docs).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS4xMSIsInVwZGF0ZWRJblZlciI6IjQzLjY2LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [pnpm/action-setup](https://redirect.github.com/pnpm/action-setup) |
action | major | `v4` → `v5` |

---

### Release Notes

<details>
<summary>pnpm/action-setup (pnpm/action-setup)</summary>

###
[`v5`](https://redirect.github.com/pnpm/action-setup/compare/v4...v5)

[Compare
Source](https://redirect.github.com/pnpm/action-setup/compare/v4...v5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/docs).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [glob](https://redirect.github.com/isaacs/node-glob) | [`^11.1.0` →
`^13.0.6`](https://renovatebot.com/diffs/npm/glob/11.1.0/13.0.6) |
![age](https://developer.mend.io/api/mc/badges/age/npm/glob/13.0.6?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/glob/11.1.0/13.0.6?slim=true)
|

---

### Release Notes

<details>
<summary>isaacs/node-glob (glob)</summary>

###
[`v13.0.6`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.5...v13.0.6)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.5...v13.0.6)

###
[`v13.0.5`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.4...v13.0.5)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.4...v13.0.5)

###
[`v13.0.4`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.3...v13.0.4)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.3...v13.0.4)

###
[`v13.0.3`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.2...782e3a74b42d8f71deca7b4b74cea17a600e59d2)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.2...v13.0.3)

###
[`v13.0.2`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.1...2135b0c3580caf6330e28dedb2d57cea75f15154)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.1...v13.0.2)

###
[`v13.0.1`](https://redirect.github.com/isaacs/node-glob/compare/v13.0.0...v13.0.1)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v13.0.0...v13.0.1)

###
[`v13.0.0`](https://redirect.github.com/isaacs/node-glob/compare/v12.0.0...v13.0.0)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v12.0.0...v13.0.0)

###
[`v12.0.0`](https://redirect.github.com/isaacs/node-glob/compare/v11.1.0...v12.0.0)

[Compare
Source](https://redirect.github.com/isaacs/node-glob/compare/v11.1.0...v12.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/docs).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xNi4xIiwidXBkYXRlZEluVmVyIjoiNDMuMzIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…uidance (unraid#429)

## Summary

- Replace "flash device" with "boot device" in user-facing prose to
match the 7.3+ WebGUI labeling.
- Add reusable partials for USB drive brand/counterfeit guidance and the
"Boot device vs Flash" version note.
- Update GUID, licensing, and troubleshooting sections with consistent
copy and cross-links.
- Product-literal names (USB Flash Creator, `flash` share) are
unchanged.

## Files touched (24)

Terminology updates across getting-started, system-administration,
troubleshooting, and manage-storage docs. Two new partials:
- `flash-drive-selection-guidance.mdx` — brand recommendations and
counterfeit PSA
- `webgui-boot-device-labels.mdx` — explains Boot device (7.3+) vs Flash
(older) labels

## Notes for reviewers

- All existing anchors and URL slugs are preserved (e.g.
`changing-the-flash-device.mdx`, `#choosing-a-usb-flash-drive`).
- No build/config/dependency changes.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Standardized “boot device” terminology across guides for consistency
and clearer instructions
* Added guidance on choosing reliable boot media, counterfeit awareness,
and community-recommended options
* Added targeted callouts/anchors and a new subsection for boot-media
selection guidance
* Updated WebGUI label references, image captions, and compatibility
notes for Unraid 7.3.0+
* Clarified recovery, replacement, backup, password-reset, CLI examples,
and licensing FAQ wording
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1213589838099743

---------

Co-authored-by: grizzlechips <zach@zachtuttle.com>
## Summary
- replace the existing Algolia reindex action with the direct crawler
API flow captured from the dashboard HAR
- resolve the crawler dynamically by name and trigger reindexing with
crawler-specific credentials only
- document the exact GitHub secrets and optional variables needed for
the workflow

## Validation
- parsed `.github/workflows/algolia-reindex.yml` successfully with Ruby
YAML
- reviewed the workflow and README diff directly
- did not run the full build because this repo’s AGENTS.md explicitly
says not to use it for routine validation

## Notes
- defaults come from the HAR and current repo config: app `JUYLFQHE7W`,
crawler `unraid`
- the workflow keeps `workflow_dispatch` and `workflow_call` support
while adding automatic runs for content changes on `main`


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added guide documenting the automated search index refresh workflow,
including configuration variables and triggering conditions.

* **Chores**
* Improved search index reliability through enhanced workflow with
automatic triggering on documentation updates and robust error handling.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- explain how to restore a flash backup when the server uses internal
boot
- document that users should restore to USB first, then switch to
internal boot via the onboarding wizard
- clarify that users do not manually place backup files into the
internal boot partition

## Validation
- ran `git diff --check`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added detailed instructions for restoring flash backups to internal
boot, including steps to boot from the restored USB drive and use the
Onboarding Wizard to complete the internal boot configuration switch
with automatic boot configuration copying.
* Added FAQ entry clarifying flash backup compatibility with internal
boot and proper restoration procedures to avoid manual file copying.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- add a new Unraid Account walkthrough for updating the billing address
shown on invoice PDFs
- update the instructions to match the current order confirmation and
Manage Purchases -> Orders flow
- keep only the current three screenshots, crop them to the relevant UI,
circle the Update Address target, and redact sensitive values

## Testing
- reviewed the new MDX page content
- verified only the three current walkthrough screenshots remain under
`static/img/unraid-account`
- used targeted OCR checks to confirm redacted personal info and
activation-code text no longer read back from the images

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added comprehensive guide for updating your billing address in the
Unraid account
* Step-by-step instructions for accessing address updates from order
confirmation or account management
* Details on modifying your billing address through the customer portal
  * Troubleshooting guidance for common scenarios

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Before Submitting This PR, Please Ensure You Have Completed The
Following:

1. [ ] Are internal links to wiki documents using [relative file
links](https://docusaurus.io/docs/markdown-features/links)?
2. [ ] Are all new documentation files lowercase, with dash separated
names (ex. unraid-os.mdx)?
3. [ ] Are all assets (images, etc), located in an assets/ subfolder
next to the .md/mdx files?
4. [x] Have you checked to ensure there aren't other open [Pull
Requests](../../../pulls) for the same update/change?
5. [ ] Is the build succeeding?


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Corrected a spelling error in the "Application Server" section of the
getting started guide to improve documentation clarity and accuracy.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@grizzlechips grizzlechips changed the title feat: Community App Guides section and Paperless NGX placeholder Add complete Paperless NGX community app guide Apr 1, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 15

🧹 Nitpick comments (6)
i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx (1)

63-63: Optional: keep German wording consistent with the new boot-drive page.

The link points to secure-your-boot-drive, but text still says “Flash-Laufwerk.” Consider aligning wording.

Suggested wording tweak
-Bevor Sie installieren, sollten Sie in Erwägung ziehen, Ihr Flash-Laufwerk zu sichern, um Ihre Konfiguration zu schützen. Siehe [Sichern Sie Ihr Flash-Laufwerk](/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/) für Sicherungsanweisungen.
+Bevor Sie installieren, sollten Sie in Erwägung ziehen, Ihr Boot-Gerät zu sichern, um Ihre Konfiguration zu schützen. Siehe [Sichern Sie Ihr Boot-Gerät](/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/) für Sicherungsanweisungen.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx`
at line 63, Replace the inconsistent German term "Flash-Laufwerk" in the
sentence that links to
/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/ with
the wording used on the new boot-drive page (e.g., "Boot-Laufwerk" or the exact
phrase used on that page) so the link text and target are consistent; update the
sentence "Bevor Sie installieren, sollten Sie in Erwägung ziehen, Ihr
Flash-Laufwerk zu sichern..." to use the matched term and ensure the link anchor
text remains intact.
i18n/es/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx (1)

55-55: Optional: align Spanish link text with the new “boot drive” route.

The destination was updated to secure-your-boot-drive, but the anchor text still says “unidad flash.” Consider matching terminology for consistency.

Suggested wording tweak
-Antes de instalar, considera realizar una copia de seguridad de tu flash para proteger tu configuración. Consulta [Asegura tu unidad flash](/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/) para obtener orientación sobre copias de seguridad.
+Antes de instalar, considera realizar una copia de seguridad de tu dispositivo de arranque para proteger tu configuración. Consulta [Asegura tu dispositivo de arranque](/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/) para obtener orientación sobre copias de seguridad.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@i18n/es/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx`
at line 55, The link anchor text still reads “Asegura tu unidad flash” but the
route was changed to secure-your-boot-drive; update the anchor text to match the
new terminology (e.g., “Asegura tu unidad de arranque” or “Asegura tu boot
drive”) in the sentence containing the link so the visible text aligns with the
destination; locate the sentence with "Asegura tu unidad flash" and replace that
phrase while keeping the existing link target intact.
docs/unraid-os/getting-started/set-up-unraid/deploy-and-configure-unraid-os.mdx (1)

146-164: Inconsistent indentation in checklist items.

The checklist items have a leading space before on continuation lines (e.g., line 147: ✅ Configure...). This may cause unexpected rendering in some Markdown processors.

Proposed fix - align indentation
 ✅ Set the USB flash drive as the primary boot device.\
- ✅ Configure the storage controller to **%%AHCI|ahci%%** mode with SATA connections.\
- ✅ Set the controller to **%%HBA mode|hba-mode%%** (not **%%RAID|raid%%**).\
- ✅ Disable **Secure Boot** as it is not supported by Unraid OS.
+✅ Configure the storage controller to **%%AHCI|ahci%%** mode with SATA connections.\
+✅ Set the controller to **%%HBA mode|hba-mode%%** (not **%%RAID|raid%%**).\
+✅ Disable **Secure Boot** as it is not supported by Unraid OS.

Apply similar changes to lines 153-154 and 160-163.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@docs/unraid-os/getting-started/set-up-unraid/deploy-and-configure-unraid-os.mdx`
around lines 146 - 164, The checklist items in the MDX have inconsistent leading
spaces before the check emoji (e.g., lines with " ✅ Configure the storage
controller...", " ✅ Enable **%%IOMMU|iommu%%**...", and the Troubleshooting list
items like " ✅ Disabling USB 2.0/3.0 support."), which can break rendering;
remove the extra leading space so each line starts directly with "✅" to align
indentation for items like the storage controller line, the Advanced Settings
IOMMU/hvm lines, and all Troubleshooting checklist lines.
docs/unraid-os/system-administration/secure-your-server/secure-your-boot-drive.mdx (1)

41-45: Make the restore action explicit in USB Creator.

Line 44 should name the Use custom option explicitly so users can reliably restore from the backup ZIP.

🧭 Proposed wording improvement
-If you need to recreate your boot device, use this backup with the [USB Creator tool](https://unraid.net/download).
+If you need to recreate your boot device, use this backup with the [USB Creator tool](https://unraid.net/download) via the **Use custom** option.

Based on learnings: Unraid's flash backup feature creates complete installation ZIP files compatible with the USB Flash Creator's "Use custom" option for restoring to new flash devices.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@docs/unraid-os/system-administration/secure-your-server/secure-your-boot-drive.mdx`
around lines 41 - 45, Update the restore instruction to explicitly name the USB
Flash Creator's "Use custom" option so users know exactly how to restore the
backup ZIP; change the sentence that currently says "use this backup with the
USB Creator tool" to something like "use the USB Flash Creator's 'Use custom'
option to restore this backup ZIP" and ensure mentions of "backup ZIP", "USB
Flash Creator", and the "Use custom" option are clear and consistent (look for
the existing phrasing referencing the USB Creator tool and replace it).
.github/workflows/algolia-reindex.yml (1)

51-62: Consider pagination if crawler count exceeds 100.

The API call uses limit=100. If the Algolia account has more than 100 crawlers, the target crawler may not appear in the first page. This is unlikely for most setups but worth noting if the account grows.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/algolia-reindex.yml around lines 51 - 62, The current call
that populates response using curl with "limit=100" may miss crawlers beyond the
first page; update the logic that builds response and extracts crawler_id
(variables response and crawler_id, and the jq selection using
ALGOLIA_CRAWLER_NAME) to handle pagination: loop/fetch additional pages (or
follow next-page cursor) until either the desired crawler name is found or no
more pages remain, aggregating results before running the jq filter, and keep
using the same jq expression '.data[] | select(.name == $crawler_name) | .id' to
extract the id once the crawler is discovered.
src/components/ResponsiveEmbed/index.tsx (1)

40-48: Consider lazy-loading embeds by default.

Adding loading="lazy" on the iframe would reduce initial page cost for docs with many embeds.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ResponsiveEmbed/index.tsx` around lines 40 - 48, The iframe in
the ResponsiveEmbed component should lazy-load to reduce initial page cost;
update the iframe element inside ResponsiveEmbed (the JSX that spreads
credentialless and uses className={iframeClasses}, src, title, allow,
referrerPolicy, allowFullScreen) to include loading="lazy" by default (or add a
prop like loading that defaults to "lazy" if you need an override) so embeds are
lazy-loaded unless explicitly disabled.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/unraid-os/partials/flash-drive-selection-guidance.mdx`:
- Line 5: The sentence in the paragraph that reads "...These brands usually
offer good quality products but are less targeted by counterfeiters." needs the
compound modifier hyphenated for readability; update that phrase to
"good-quality products" in the same paragraph (the sentence starting "If you are
unsure whether you are buying an authentic product..."), preserving the rest of
the wording and punctuation.

In `@docs/unraid-os/troubleshooting/faq.mdx`:
- Line 340: Update the instruction that currently says to rename the `EFI-`
folder: replace `EFI-` with `EFI~` so the sentence reads that the boot volume
initially contains an `EFI~` folder which should be renamed to `EFI` (remove the
tilde) to enable UEFI boot; modify the text referencing `EFI-` in the sentence
to use `EFI~` and ensure it still instructs to rename it to `EFI`.

In `@docs/unraid-os/troubleshooting/licensing-faq.mdx`:
- Line 93: Update the legacy UI wording in the sentence that references pre-7.3
backup controls: replace the ambiguous “Flash / Flash device” text with the
exact control label “FLASH BACKUP” and revise the path to read “Main → Flash
device → FLASH BACKUP” so the documentation explicitly matches the legacy UI
used in releases before 7.3.0 (edit the sentence containing “Boot Device Backup”
/ “Flash / Flash device” in licensing-faq.mdx).

In
`@docs/unraid-os/using-unraid-to/manage-storage/array/replacing-disks-in-array.mdx`:
- Around line 148-150: Step 8 is ambiguous about how the rebuild is triggered in
Normal vs Maintenance Mode; clarify that the **Start** button begins the rebuild
only when not in Maintenance Mode and that when in %%Maintenance
Mode|maintenance-mode%% you must instead manually press the **Sync** button in
the **Main** tab to start the rebuild (i.e., update the wording of Step 8 to
scope it to Normal Mode and keep Step 9 describing the manual **Sync** action in
Maintenance Mode).

In `@guides/paperless-ngx.mdx`:
- Around line 159-160: The CI warnings come from literal URLs in the table
entries for PAPERLESS_TIKA_GOTENBERG_ENDPOINT and PAPERLESS_TIKA_ENDPOINT; fix
by replacing the plain URLs with Markdown autolinks (wrap each URL in angle
brackets, e.g. <http://...>) wherever those variables appear in the document
(including the other occurrences referenced), so the URLs are not treated as
literal strings by remark-lint/no-literal-urls.
- Around line 93-102: Update the Paperless-ngx guide section that currently
instructs using Bitnami Redis with "allow empty passwords" and deleting the
template password: replace those steps with secure Redis password setup
instructions—create a strong password in the Bitnami Redis template (do not
delete it), enable password authentication, and show how to configure
Paperless-ngx to use the redis://:PASSWORD@HOST:PORT URL (example placeholder)
in the Paperless config (refer to the redis URL format used by Paperless-ngx).
Also note changing the template field instead of leaving it blank and include a
short note on storing the password securely.

In
`@i18n/de/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx`:
- Line 268: The MDX contains a literal "\n  --" sequence in the sentence
starting "Ab Unraid OS 6.9 beginnt Partition 1..." which will render verbatim;
replace that literal escape with proper MDX formatting (e.g., insert an actual
line break or paragraph break and use an em dash or a new paragraph) so the note
about backing up the flash drive renders correctly; update the string that
contains "Ab Unraid OS 6.9 beginnt Partition 1..." to remove the "\n  --" and
format the separator as a real newline/paragraph or "—" instead.

In
`@i18n/es/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx`:
- Line 272: Replace the escaped sequence "\--" at the start of the line
containing "\-- Siempre [respalda tu unidad flash]..." with a proper em-dash or
an unescaped dash; locate the line with the literal text "\-- Siempre [respalda
tu unidad flash]" and change it to "— Siempre [respalda tu unidad flash]..." (or
simply remove the backslash to use "-- Siempre...") so the em-dash renders
correctly in the FAQ content.

In
`@i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx`:
- Line 272: The bullet contains a malformed literal sequence "\n  --"; replace
that with proper Markdown by splitting into two lines or making the second part
its own bullet — e.g. end the sentence after "style de partition." then on the
next line add a new Markdown sentence or list item starting with "-- Toujours
[sauvegarder votre clé USB]..." so the link remains intact and the output
renders correctly; locate the exact bullet text "À partir d'Unraid OS 6.9, la
partition 1 commence..." and update it accordingly.

In
`@i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/licensing-faq.mdx`:
- Line 53: The embed title attribute currently reads title="Loom walkthrough:
Unraid licensing FAQ" in the document metadata; replace that English string with
a Chinese translation (e.g., title="Loom 演示:Unraid 授权常见问题") so the page
metadata/localized embed title matches the rest of the Chinese content—update
the title="..." value accordingly in the file where that attribute appears.

In `@src/components/ResponsiveEmbed/index.tsx`:
- Line 41: In ResponsiveEmbed's iframe JSX, remove the spread hack `{...{
credentialless: "" }}` and set the credentialless attribute directly on the
iframe element (either as `credentialless` for boolean usage or
`credentialless=""` if you prefer an explicit empty string) where the iframe
with `iframeClasses` is defined; update the iframe JSX in the ResponsiveEmbed
component accordingly so props use normal typing instead of the spread object.

In `@src/css/custom.css`:
- Around line 158-164: The stylelint failure is caused by the text-rendering
property using "optimizeLegibility" (camelCase) in the css rule for the html,
body selectors and another occurrence; change the value to the expected
lowercase form "optimizelegibility" wherever text-rendering: optimizeLegibility
appears (e.g., in the html, body rule and the second occurrence around the
footer/body styles) so the stylesheet conforms to the configured rule.

In `@src/theme/Footer/Copyright/index.tsx`:
- Around line 5-11: The COPYRIGHT_YEAR_PATTERN currently is non-global so
FooterCopyright's replace only updates the first "2005-YYYY" occurrence; change
COPYRIGHT_YEAR_PATTERN to a global regex (e.g., /2005-\d{4}/g) and keep the
replace chain that uses CURRENT_YEAR_TOKEN_PATTERN and COPYRIGHT_YEAR_PATTERN so
all legacy year ranges in the resolvedCopyright string are replaced with
`2005-${currentYear}`.

In `@src/theme/Layout/FeedbackWidget.tsx`:
- Around line 9-17: FOCUSABLE_SELECTOR currently includes 'iframe', which allows
Tab/Escape to move focus into the iframe and escape the modal trap; remove
'iframe' from FOCUSABLE_SELECTOR and instead treat iframes as non-focusable for
the trap, and add a focus management fix: update the component that implements
the trap (the keydown handler/onKeyDown block and the focus-trap logic used
around lines 51-83 and 153-218) to listen for focusin events and if
document.activeElement is an iframe move focus back into the modal (e.g., focus
the first or last focusable element found by the existing focus-finding
helpers), and ensure the global keydown/close logic still runs by keeping the
Escape/Tab handling in the component-level handlers; in short—remove 'iframe'
from FOCUSABLE_SELECTOR and add a focusin handler that redirects iframe focus
back into the modal (using the same helper functions the trap already uses) so
Tab and Escape remain handled by the parent.

In `@src/theme/Layout/ThemeSync.tsx`:
- Around line 50-66: The code currently writes the embed's resolved theme to the
shared DOCUSAURUS_THEME_STORAGE_KEY inside setCurrentTheme, which can overwrite
the user's global docs preference; change the logic so that when running inside
an iframe/embed you persist to the iframe-local THEME_STORAGE_KEY instead of
DOCUSAURUS_THEME_STORAGE_KEY, while keeping the existing
dispatchStorageChangeEvent behavior for whichever key you write. Detect embed
context (e.g. window.self !== window.top or an existing isIframe/isEmbed flag)
and in the try block call window.localStorage.setItem(THEME_STORAGE_KEY, theme)
and dispatchStorageChangeEvent(THEME_STORAGE_KEY, oldValue, theme) for iframes,
otherwise keep using DOCUSAURUS_THEME_STORAGE_KEY as before with
dispatchStorageChangeEvent(DOCUSAURUS_THEME_STORAGE_KEY, oldValue, theme).

---

Nitpick comments:
In @.github/workflows/algolia-reindex.yml:
- Around line 51-62: The current call that populates response using curl with
"limit=100" may miss crawlers beyond the first page; update the logic that
builds response and extracts crawler_id (variables response and crawler_id, and
the jq selection using ALGOLIA_CRAWLER_NAME) to handle pagination: loop/fetch
additional pages (or follow next-page cursor) until either the desired crawler
name is found or no more pages remain, aggregating results before running the jq
filter, and keep using the same jq expression '.data[] | select(.name ==
$crawler_name) | .id' to extract the id once the crawler is discovered.

In
`@docs/unraid-os/getting-started/set-up-unraid/deploy-and-configure-unraid-os.mdx`:
- Around line 146-164: The checklist items in the MDX have inconsistent leading
spaces before the check emoji (e.g., lines with " ✅ Configure the storage
controller...", " ✅ Enable **%%IOMMU|iommu%%**...", and the Troubleshooting list
items like " ✅ Disabling USB 2.0/3.0 support."), which can break rendering;
remove the extra leading space so each line starts directly with "✅" to align
indentation for items like the storage controller line, the Advanced Settings
IOMMU/hvm lines, and all Troubleshooting checklist lines.

In
`@docs/unraid-os/system-administration/secure-your-server/secure-your-boot-drive.mdx`:
- Around line 41-45: Update the restore instruction to explicitly name the USB
Flash Creator's "Use custom" option so users know exactly how to restore the
backup ZIP; change the sentence that currently says "use this backup with the
USB Creator tool" to something like "use the USB Flash Creator's 'Use custom'
option to restore this backup ZIP" and ensure mentions of "backup ZIP", "USB
Flash Creator", and the "Use custom" option are clear and consistent (look for
the existing phrasing referencing the USB Creator tool and replace it).

In
`@i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx`:
- Line 63: Replace the inconsistent German term "Flash-Laufwerk" in the sentence
that links to
/unraid-os/system-administration/secure-your-server/secure-your-boot-drive/ with
the wording used on the new boot-drive page (e.g., "Boot-Laufwerk" or the exact
phrase used on that page) so the link text and target are consistent; update the
sentence "Bevor Sie installieren, sollten Sie in Erwägung ziehen, Ihr
Flash-Laufwerk zu sichern..." to use the matched term and ensure the link anchor
text remains intact.

In
`@i18n/es/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx`:
- Line 55: The link anchor text still reads “Asegura tu unidad flash” but the
route was changed to secure-your-boot-drive; update the anchor text to match the
new terminology (e.g., “Asegura tu unidad de arranque” or “Asegura tu boot
drive”) in the sentence containing the link so the visible text aligns with the
destination; locate the sentence with "Asegura tu unidad flash" and replace that
phrase while keeping the existing link target intact.

In `@src/components/ResponsiveEmbed/index.tsx`:
- Around line 40-48: The iframe in the ResponsiveEmbed component should
lazy-load to reduce initial page cost; update the iframe element inside
ResponsiveEmbed (the JSX that spreads credentialless and uses
className={iframeClasses}, src, title, allow, referrerPolicy, allowFullScreen)
to include loading="lazy" by default (or add a prop like loading that defaults
to "lazy" if you need an override) so embeds are lazy-loaded unless explicitly
disabled.
🪄 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: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: eb4f3c6b-11dc-47cd-861f-d8af996de20c

📥 Commits

Reviewing files that changed from the base of the PR and between 227f856 and 248ef23.

⛔ Files ignored due to path filters (90)
  • guides/images/images/add-another-path-port-variable-button.png is excluded by !**/*.png
  • guides/images/images/add-configuration-dialog-box.png is excluded by !**/*.png
  • guides/images/images/all-variables-shown-in-paperless-template.png is excluded by !**/*.png
  • guides/images/images/apps-search-paperless-results.png is excluded by !**/*.png
  • guides/images/images/archive-folder-pdf.png is excluded by !**/*.png
  • guides/images/images/bitnami-redis-community-apps.png is excluded by !**/*.png
  • guides/images/images/clean-logs-after-fixing.png is excluded by !**/*.png
  • guides/images/images/consume-folder-in-finder.png is excluded by !**/*.png
  • guides/images/images/consume-subfolder-created.png is excluded by !**/*.png
  • guides/images/images/consume-subfolder-network-share.png is excluded by !**/*.png
  • guides/images/images/create-mail-account-gmail.png is excluded by !**/*.png
  • guides/images/images/create-tag-from-document.png is excluded by !**/*.png
  • guides/images/images/create-tag-motherboard-parent-server.png is excluded by !**/*.png
  • guides/images/images/create-tag-server.png is excluded by !**/*.png
  • guides/images/images/creating-share-in-unraid-called-paperless.png is excluded by !**/*.png
  • guides/images/images/docker-tab-all-containers-running.png is excluded by !**/*.png
  • guides/images/images/document-with-server-tag.png is excluded by !**/*.png
  • guides/images/images/documents-after-email-import.png is excluded by !**/*.png
  • guides/images/images/documents-with-multiple-tags.png is excluded by !**/*.png
  • guides/images/images/documents-with-tag-badges.png is excluded by !**/*.png
  • guides/images/images/gotenberg-template.png is excluded by !**/*.png
  • guides/images/images/mail-rule-setup.png is excluded by !**/*.png
  • guides/images/images/mail-settings-process-mail-button.png is excluded by !**/*.png
  • guides/images/images/making-share-exportable-and-setting-permissions.png is excluded by !**/*.png
  • guides/images/images/nvidia-driver-community-apps.png is excluded by !**/*.png
  • guides/images/images/nvidia-driver-settings-page.png is excluded by !**/*.png
  • guides/images/images/ollama-community-apps.png is excluded by !**/*.png
  • guides/images/images/open-webui-community-apps.png is excluded by !**/*.png
  • guides/images/images/open-webui-first-setup.png is excluded by !**/*.png
  • guides/images/images/open-webui-ollama-url-template.png is excluded by !**/*.png
  • guides/images/images/open-webui-pulling-minicpmv.png is excluded by !**/*.png
  • guides/images/images/open-webui-pulling-qwen3.png is excluded by !**/*.png
  • guides/images/images/originals-folder-docx.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-chat-document.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-community-apps.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-dashboard.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-port-changed.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-port-conflict.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-rag-chat.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-wizard-classification-options.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-wizard-connection.png is excluded by !**/*.png
  • guides/images/images/paperless-ai-wizard-ollama-settings.png is excluded by !**/*.png
  • guides/images/images/paperless-consumer-variables.png is excluded by !**/*.png
  • guides/images/images/paperless-dashboard-first-start.png is excluded by !**/*.png
  • guides/images/images/paperless-django-admin-token.png is excluded by !**/*.png
  • guides/images/images/paperless-document-id-in-url.png is excluded by !**/*.png
  • guides/images/images/paperless-documents-with-ai-tags.png is excluded by !**/*.png
  • guides/images/images/paperless-full-ai-stack.png is excluded by !**/*.png
  • guides/images/images/paperless-gotenberg-tika-stack.png is excluded by !**/*.png
  • guides/images/images/paperless-gpt-community-apps.png is excluded by !**/*.png
  • guides/images/images/paperless-gpt-ocr-results.png is excluded by !**/*.png
  • guides/images/images/paperless-gpt-template-ocr-tag.png is excluded by !**/*.png
  • guides/images/images/paperless-gpt-template-top.png is excluded by !**/*.png
  • guides/images/images/paperless-gpt-template-vision.png is excluded by !**/*.png
  • guides/images/images/paperless-postgres-redis.png is excluded by !**/*.png
  • guides/images/images/paperless-settings-django-admin.png is excluded by !**/*.png
  • guides/images/images/paperless-sign-up-page.png is excluded by !**/*.png
  • guides/images/images/paperless-template-media-consumption-export-paths.png is excluded by !**/*.png
  • guides/images/images/paperless-template-redis-address-highlighted.png is excluded by !**/*.png
  • guides/images/images/paperless-tika-gotenberg-variables.png is excluded by !**/*.png
  • guides/images/images/paperless-word-doc-uploaded.png is excluded by !**/*.png
  • guides/images/images/postgres-16-unraid-docker-template-default.png is excluded by !**/*.png
  • guides/images/images/postgres-template-password-user-database-filled-in.png is excluded by !**/*.png
  • guides/images/images/redis-authentication-error-in-logs.png is excluded by !**/*.png
  • guides/images/images/redis-container-template-delete-password.png is excluded by !**/*.png
  • guides/images/images/tags-list-with-counts.png is excluded by !**/*.png
  • guides/images/images/tags-page-empty.png is excluded by !**/*.png
  • guides/images/images/three-paperless-folders-created.png is excluded by !**/*.png
  • guides/images/images/tika-pull-error.png is excluded by !**/*.png
  • guides/images/images/tika-repository-close-up.png is excluded by !**/*.png
  • guides/images/images/tika-template-fixed-repository.png is excluded by !**/*.png
  • guides/images/images/view-of-first-uploaded-document.png is excluded by !**/*.png
  • guides/images/images/word-doc-preview-in-paperless.png is excluded by !**/*.png
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • static/img/icons/tabler-chevron-up.svg is excluded by !**/*.svg
  • static/img/icons/tabler-external-link.svg is excluded by !**/*.svg
  • static/img/icons/tabler-search.svg is excluded by !**/*.svg
  • static/img/icons/tabler-x.svg is excluded by !**/*.svg
  • static/img/move-license-to-tpm-replace-key.png is excluded by !**/*.png
  • static/img/onboarding_step1.png is excluded by !**/*.png
  • static/img/onboarding_step2.png is excluded by !**/*.png
  • static/img/onboarding_step3a.png is excluded by !**/*.png
  • static/img/onboarding_step3b.png is excluded by !**/*.png
  • static/img/onboarding_step4.png is excluded by !**/*.png
  • static/img/onboarding_step5.png is excluded by !**/*.png
  • static/img/onboarding_step6.png is excluded by !**/*.png
  • static/img/unraid-account/update-billing-address-new-step-1.png is excluded by !**/*.png
  • static/img/unraid-account/update-billing-address-new-step-2.png is excluded by !**/*.png
  • static/img/unraid-account/update-billing-address-new-step-3.png is excluded by !**/*.png
📒 Files selected for processing (119)
  • .github/workflows/algolia-reindex.yml
  • .github/workflows/pr-lint.yml
  • .gitignore
  • .nvmrc
  • .remarkignore
  • AGENTS.md
  • README.md
  • docs/unraid-account/update-billing-address-on-file.mdx
  • docs/unraid-connect/automated-flash-backup.mdx
  • docs/unraid-os/getting-started/explore-the-user-interface/tour-the-web-gui.mdx
  • docs/unraid-os/getting-started/set-up-unraid/complete-your-post-setup-essentials.mdx
  • docs/unraid-os/getting-started/set-up-unraid/configure-your-array.mdx
  • docs/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • docs/unraid-os/getting-started/set-up-unraid/customize-unraid-settings.mdx
  • docs/unraid-os/getting-started/set-up-unraid/deploy-and-configure-unraid-os.mdx
  • docs/unraid-os/getting-started/set-up-unraid/internal-boot-faq.mdx
  • docs/unraid-os/getting-started/what-is-unraid.mdx
  • docs/unraid-os/partials/flash-drive-selection-guidance.mdx
  • docs/unraid-os/partials/webgui-boot-device-labels.mdx
  • docs/unraid-os/release-notes/7.2.4.md
  • docs/unraid-os/release-notes/7.3.0.md
  • docs/unraid-os/system-administration/advanced-tools/command-line-interface.mdx
  • docs/unraid-os/system-administration/advanced-tools/wake-on-lan.mdx
  • docs/unraid-os/system-administration/maintain-and-update/changing-the-flash-device.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/backup-manual-method.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/backup-using-webgui.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/manual-downgrade-simplest.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/replacement-manual-method.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/replacement-using-creator.mdx
  • docs/unraid-os/system-administration/maintain-and-update/upgrading-unraid.mdx
  • docs/unraid-os/system-administration/secure-your-server/partials/reset-password-advanced.mdx
  • docs/unraid-os/system-administration/secure-your-server/partials/reset-password-basic.mdx
  • docs/unraid-os/system-administration/secure-your-server/secure-your-boot-drive.mdx
  • docs/unraid-os/system-administration/secure-your-server/security-fundamentals.mdx
  • docs/unraid-os/system-administration/secure-your-server/user-management.mdx
  • docs/unraid-os/system-administration/secure-your-server/wireguard.mdx
  • docs/unraid-os/troubleshooting/common-issues/boot-and-startup-failures.mdx
  • docs/unraid-os/troubleshooting/common-issues/data-recovery.mdx
  • docs/unraid-os/troubleshooting/common-issues/docker-troubleshooting.mdx
  • docs/unraid-os/troubleshooting/common-issues/partials/unclean-shutdowns/flash-drive-failure.mdx
  • docs/unraid-os/troubleshooting/common-issues/unclean-shutdowns.mdx
  • docs/unraid-os/troubleshooting/diagnostics/capture-diagnostics-and-logs.mdx
  • docs/unraid-os/troubleshooting/diagnostics/partials/syslog-server/local.mdx
  • docs/unraid-os/troubleshooting/diagnostics/partials/syslog-server/mirror.mdx
  • docs/unraid-os/troubleshooting/faq.mdx
  • docs/unraid-os/troubleshooting/licensing-faq.mdx
  • docs/unraid-os/troubleshooting/partials/licensing-faq/manual-keyfile-network.mdx
  • docs/unraid-os/troubleshooting/partials/licensing-faq/manual-keyfile-offline.mdx
  • docs/unraid-os/troubleshooting/tpm-licensing-faq.mdx
  • docs/unraid-os/using-unraid-to/create-virtual-machines/vm-setup.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/array/array-health-and-maintenance.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/array/replacing-disks-in-array.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/partials/troubleshoot-license-issues.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/shares.mdx
  • docs/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • docs/unraid-os/using-unraid-to/run-docker-containers/overview.mdx
  • docusaurus.config.ts
  • embedding.md
  • glossary.yaml
  • guides/paperless-ngx.mdx
  • i18n/de/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • i18n/de/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/de/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx
  • i18n/de/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/licensing-faq.mdx
  • i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • i18n/de/docusaurus-theme-classic/footer.json
  • i18n/en/docusaurus-theme-classic/footer.json
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/licensing-faq.mdx
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • i18n/es/docusaurus-theme-classic/footer.json
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/licensing-faq.mdx
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • i18n/fr/docusaurus-theme-classic/footer.json
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/licensing-faq.mdx
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • i18n/zh/docusaurus-theme-classic/footer.json
  • iframe-test.html
  • package.json
  • plugins/structured-data/index.mjs
  • pnpm-workspace.yaml
  • src/components/ResponsiveEmbed/index.tsx
  • src/components/ResponsiveEmbed/styles.module.css
  • src/css/custom.css
  • src/hooks/useIframe.ts
  • src/theme/Admonition/Icon/Danger.tsx
  • src/theme/Admonition/Icon/Info.tsx
  • src/theme/Admonition/Icon/Note.tsx
  • src/theme/Admonition/Icon/Tip.tsx
  • src/theme/Admonition/Icon/Warning.tsx
  • src/theme/Footer/Copyright/index.tsx
  • src/theme/Icon/Arrow/index.tsx
  • src/theme/Icon/Close/index.tsx
  • src/theme/Icon/Copy/index.tsx
  • src/theme/Icon/DarkMode/index.tsx
  • src/theme/Icon/Edit/index.tsx
  • src/theme/Icon/ExternalLink/index.tsx
  • src/theme/Icon/Home/index.tsx
  • src/theme/Icon/Language/index.tsx
  • src/theme/Icon/LightMode/index.tsx
  • src/theme/Icon/Menu/index.tsx
  • src/theme/Icon/Success/index.tsx
  • src/theme/Icon/SystemColorMode/index.tsx
  • src/theme/Icon/WordWrap/index.tsx
  • src/theme/Icon/shared.tsx
  • src/theme/Layout/FeedbackWidget.tsx
  • src/theme/Layout/IframeNavigation.tsx
  • src/theme/Layout/Provider/index.tsx
  • src/theme/Layout/ThemeSync.tsx
  • src/theme/Layout/index.tsx
  • wrangler.jsonc
✅ Files skipped from review due to trivial changes (65)
  • .gitignore
  • .nvmrc
  • AGENTS.md
  • i18n/fr/docusaurus-theme-classic/footer.json
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • docs/unraid-os/system-administration/advanced-tools/wake-on-lan.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/replacement-manual-method.mdx
  • docs/unraid-os/system-administration/secure-your-server/partials/reset-password-advanced.mdx
  • docs/unraid-os/system-administration/secure-your-server/partials/reset-password-basic.mdx
  • docs/unraid-os/system-administration/secure-your-server/user-management.mdx
  • docs/unraid-os/troubleshooting/common-issues/partials/unclean-shutdowns/flash-drive-failure.mdx
  • .remarkignore
  • docs/unraid-account/update-billing-address-on-file.mdx
  • docs/unraid-os/getting-started/explore-the-user-interface/tour-the-web-gui.mdx
  • docs/unraid-os/getting-started/set-up-unraid/configure-your-array.mdx
  • docs/unraid-os/partials/webgui-boot-device-labels.mdx
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/es/docusaurus-theme-classic/footer.json
  • i18n/fr/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • iframe-test.html
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/troubleshooting/faq.mdx
  • i18n/zh/docusaurus-theme-classic/footer.json
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
  • i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • pnpm-workspace.yaml
  • docs/unraid-os/troubleshooting/common-issues/docker-troubleshooting.mdx
  • docs/unraid-os/system-administration/secure-your-server/wireguard.mdx
  • docs/unraid-os/troubleshooting/diagnostics/partials/syslog-server/local.mdx
  • docs/unraid-os/troubleshooting/diagnostics/partials/syslog-server/mirror.mdx
  • docs/unraid-os/troubleshooting/partials/licensing-faq/manual-keyfile-network.mdx
  • docs/unraid-os/troubleshooting/partials/licensing-faq/manual-keyfile-offline.mdx
  • docs/unraid-os/troubleshooting/diagnostics/capture-diagnostics-and-logs.mdx
  • src/theme/Admonition/Icon/Tip.tsx
  • src/theme/Admonition/Icon/Note.tsx
  • src/theme/Icon/Edit/index.tsx
  • src/theme/Layout/IframeNavigation.tsx
  • src/theme/Admonition/Icon/Info.tsx
  • docs/unraid-os/getting-started/what-is-unraid.mdx
  • docs/unraid-os/getting-started/set-up-unraid/customize-unraid-settings.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/backup-using-webgui.mdx
  • docs/unraid-os/system-administration/advanced-tools/command-line-interface.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/replacement-using-creator.mdx
  • docs/unraid-os/system-administration/maintain-and-update/partials/manual-downgrade-simplest.mdx
  • docs/unraid-os/system-administration/maintain-and-update/upgrading-unraid.mdx
  • docs/unraid-os/system-administration/secure-your-server/security-fundamentals.mdx
  • docs/unraid-os/troubleshooting/common-issues/boot-and-startup-failures.mdx
  • docs/unraid-os/using-unraid-to/create-virtual-machines/vm-setup.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/shares.mdx
  • docs/unraid-os/using-unraid-to/run-docker-containers/overview.mdx
  • docs/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
  • glossary.yaml
  • i18n/en/docusaurus-theme-classic/footer.json
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/getting-started/set-up-unraid/create-your-bootable-media.mdx
  • embedding.md
  • src/theme/Icon/Copy/index.tsx
  • wrangler.jsonc
  • src/theme/Layout/index.tsx
  • docs/unraid-connect/automated-flash-backup.mdx
  • docs/unraid-os/getting-started/set-up-unraid/internal-boot-faq.mdx
  • src/components/ResponsiveEmbed/styles.module.css
  • src/theme/Icon/Language/index.tsx
  • docs/unraid-os/troubleshooting/tpm-licensing-faq.mdx
  • i18n/de/docusaurus-theme-classic/footer.json
  • docs/unraid-os/system-administration/maintain-and-update/partials/backup-manual-method.mdx
  • i18n/es/docusaurus-plugin-content-docs/current/unraid-os/system-administration/secure-your-server/secure-your-flash-drive.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docusaurus.config.ts

@grizzlechips
Copy link
Copy Markdown
Contributor Author

grizzlechips commented Apr 1, 2026

The branch is now fully up to date with upstream/main. All 17 merge conflicts have been resolved (boot-device terminology, theme refresh, disk replacement steps, i18n formatting, and src component changes). The PR preview should build cleanly.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (3)
guides/paperless-ngx.mdx (2)

159-160: ⚠️ Potential issue | 🟡 Minor

Resolve remaining remark-lint/no-literal-urls violations.

These lines still use literal URLs/email forms and should be converted to Markdown autolinks.

🔧 Suggested patch
-| Variable | PAPERLESS_TIKA_GOTENBERG_ENDPOINT | http://192.168.1.50:3000 | Gotenberg endpoint (used later in this guide) |
-| Variable | PAPERLESS_TIKA_ENDPOINT | http://192.168.1.50:9998 | Tika endpoint (used later in this guide) |
+| Variable | PAPERLESS_TIKA_GOTENBERG_ENDPOINT | <http://192.168.1.50:3000> | Gotenberg endpoint (used later in this guide) |
+| Variable | PAPERLESS_TIKA_ENDPOINT | <http://192.168.1.50:9998> | Tika endpoint (used later in this guide) |
@@
-So for example, if your energy company always sends bills from billing@energycompany.com, put that address in the from filter. Paperless will only grab attachments from emails sent by that address.
+So for example, if your energy company always sends bills from <mailto:billing@energycompany.com>, put that address in the from filter. Paperless will only grab attachments from emails sent by that address.
@@
-The Paperless base URL is the IP address of your Paperless server along with the port. Mine looks like http://10.10.20.70:8000 but yours will be whatever address your Paperless server is on.
+The Paperless base URL is the IP address of your Paperless server along with the port. Mine looks like <http://10.10.20.70:8000> but yours will be whatever address your Paperless server is on.

Also applies to: 475-475, 651-651

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@guides/paperless-ngx.mdx` around lines 159 - 160, Convert the literal URLs in
the environment variable table entries to Markdown autolinks to satisfy
remark-lint/no-literal-urls; specifically replace the plain URLs used for
PAPERLESS_TIKA_GOTENBERG_ENDPOINT and PAPERLESS_TIKA_ENDPOINT (and the other
occurrences around the noted lines) with autolink form <http://...> so the table
cells contain markdown autolinks instead of raw literal URLs or email-like text.

242-249: ⚠️ Potential issue | 🟠 Major

Fix contradictory Redis troubleshooting guidance.

Line 242–249 currently tells users to delete the Redis password, which conflicts with the secure setup in Line 93–102 and will cause misconfiguration for password-protected Redis. Troubleshooting should instead keep Redis auth enabled and correct PAPERLESS_REDIS.

🔧 Suggested patch
-If you forgot to delete the password field in the Redis container template, you'll see this error in the Paperless logs.
+If Redis authentication is enabled but the Paperless Redis URL is missing the password (or has the wrong one), you'll see this error in the Paperless logs.
@@
-To fix this, go back to the Redis container, edit it, delete the password so the field is completely blank, and apply. Then restart the Paperless container. That should clear the error.
+To fix this, keep Redis authentication enabled and verify your `PAPERLESS_REDIS` value uses this format:
+
+`redis://:your-redis-password@YOUR-UNRAID-IP:6379`
+
+Then restart the Paperless container and re-check the logs.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@guides/paperless-ngx.mdx` around lines 242 - 249, The troubleshooting section
(currently lines referenced as 242–249) incorrectly advises deleting the Redis
password and conflicts with the secure setup described earlier (lines referenced
as 93–102); update the text to keep Redis auth enabled and instruct users to fix
the PAPERLESS_REDIS environment variable instead (e.g., use the redis URL format
including the password like redis://:PASSWORD@HOST:PORT/DB or set the correct
password in the PAPERLESS_REDIS value), then restart the Paperless
container—refer to PAPERLESS_REDIS and the earlier secure Redis configuration
when editing this guidance.
src/theme/Layout/FeedbackWidget.tsx (1)

9-16: ⚠️ Potential issue | 🟠 Major

The iframe trap is still unresolved, and it blocks keyboard access to the survey.

Line 60 makes the close button both the first and last trapped element, so Tab never reaches the embedded survey. If a user clicks into the iframe instead, Line 94 still treats that focus as inside the dialog, so the parent loses its Escape/Tab handling. A cross-origin survey iframe cannot provide a reliable modal trap in this shape; please add a keyboard-accessible fallback such as an “open survey in a new tab” control, or move the survey out of the modal.

Also applies to: 50-98, 220-232

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/theme/Layout/FeedbackWidget.tsx` around lines 9 - 16, The modal's focus
trap in FeedbackWidget makes the close button both the first and last focusable
element and treats iframe focus as internal, so Tab never reaches the embedded
cross-origin survey; to fix this add a keyboard-accessible fallback (an "Open
survey in new tab" button) and adjust the focus-trap logic to not treat iframe
focus as inside the dialog. Concretely: add a new focusable control (e.g.,
openSurveyInNewTab button) inside the FeedbackWidget so there are at least two
real tabbable elements, include it in the FOCUSABLE_SELECTOR set so Tab can
reach it, and wire it to open the survey URL in a new tab/window; also update
the focus management code (the focus-trap handler that queries
FOCUSABLE_SELECTOR and checks document.activeElement) to treat
document.activeElement.tagName === 'IFRAME' as "outside" the dialog (skip
trapping behavior and still allow Escape/tab handling) rather than trying to
keep focus inside the modal.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/theme/Layout/ThemeSync.tsx`:
- Around line 63-67: The iframe storage listener in ThemeSync uses the wrong key
and re-reads localStorage instead of using the event payload; update the storage
event handler to listen for THEME_STORAGE_KEY (in addition to or instead of
DOCUSAURUS_THEME_STORAGE_KEY for embeds) and, when matching, use event.newValue
directly to set/apply the theme rather than calling window.localStorage.getItem
again; adjust any logic around dispatchStorageChangeEvent/setting theme so the
embed path correctly responds to THEME_STORAGE_KEY changes.

---

Duplicate comments:
In `@guides/paperless-ngx.mdx`:
- Around line 159-160: Convert the literal URLs in the environment variable
table entries to Markdown autolinks to satisfy remark-lint/no-literal-urls;
specifically replace the plain URLs used for PAPERLESS_TIKA_GOTENBERG_ENDPOINT
and PAPERLESS_TIKA_ENDPOINT (and the other occurrences around the noted lines)
with autolink form <http://...> so the table cells contain markdown autolinks
instead of raw literal URLs or email-like text.
- Around line 242-249: The troubleshooting section (currently lines referenced
as 242–249) incorrectly advises deleting the Redis password and conflicts with
the secure setup described earlier (lines referenced as 93–102); update the text
to keep Redis auth enabled and instruct users to fix the PAPERLESS_REDIS
environment variable instead (e.g., use the redis URL format including the
password like redis://:PASSWORD@HOST:PORT/DB or set the correct password in the
PAPERLESS_REDIS value), then restart the Paperless container—refer to
PAPERLESS_REDIS and the earlier secure Redis configuration when editing this
guidance.

In `@src/theme/Layout/FeedbackWidget.tsx`:
- Around line 9-16: The modal's focus trap in FeedbackWidget makes the close
button both the first and last focusable element and treats iframe focus as
internal, so Tab never reaches the embedded cross-origin survey; to fix this add
a keyboard-accessible fallback (an "Open survey in new tab" button) and adjust
the focus-trap logic to not treat iframe focus as inside the dialog. Concretely:
add a new focusable control (e.g., openSurveyInNewTab button) inside the
FeedbackWidget so there are at least two real tabbable elements, include it in
the FOCUSABLE_SELECTOR set so Tab can reach it, and wire it to open the survey
URL in a new tab/window; also update the focus management code (the focus-trap
handler that queries FOCUSABLE_SELECTOR and checks document.activeElement) to
treat document.activeElement.tagName === 'IFRAME' as "outside" the dialog (skip
trapping behavior and still allow Escape/tab handling) rather than trying to
keep focus inside the modal.
🪄 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: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: cb36ed74-95ba-4021-a06c-781c9c2f4b4d

📥 Commits

Reviewing files that changed from the base of the PR and between 248ef23 and 143010b.

📒 Files selected for processing (10)
  • docs/unraid-os/partials/flash-drive-selection-guidance.mdx
  • docs/unraid-os/troubleshooting/faq.mdx
  • docs/unraid-os/troubleshooting/licensing-faq.mdx
  • docs/unraid-os/using-unraid-to/manage-storage/array/replacing-disks-in-array.mdx
  • guides/paperless-ngx.mdx
  • src/components/ResponsiveEmbed/index.tsx
  • src/css/custom.css
  • src/theme/Footer/Copyright/index.tsx
  • src/theme/Layout/FeedbackWidget.tsx
  • src/theme/Layout/ThemeSync.tsx
✅ Files skipped from review due to trivial changes (1)
  • docs/unraid-os/partials/flash-drive-selection-guidance.mdx
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/unraid-os/using-unraid-to/manage-storage/array/replacing-disks-in-array.mdx
  • docs/unraid-os/troubleshooting/faq.mdx
  • src/components/ResponsiveEmbed/index.tsx

grizzlechips added 2 commits March 31, 2026 22:39
Resolve conflicts between our CodeRabbit review fixes and upstream changes (boot-device terminology, theme refresh, disk replacement). Our branch retains all upstream content plus the additional review-driven improvements.

Made-with: Cursor
Wrap remaining literal URLs/emails in autolinks, fix Redis troubleshooting to match password-enabled setup, fix ThemeSync storage listener for embeds, and add keyboard-accessible survey fallback to FeedbackWidget.

Made-with: Cursor
@grizzlechips grizzlechips force-pushed the community-app-guides branch from a8fcec0 to d352877 Compare April 1, 2026 02:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants