Skip to content

Documentation of RADIS #186

Merged
medihack merged 17 commits intomainfrom
docs_radis
Jan 30, 2026
Merged

Documentation of RADIS #186
medihack merged 17 commits intomainfrom
docs_radis

Conversation

@mhumzaarain
Copy link
Copy Markdown
Contributor

@mhumzaarain mhumzaarain commented Jan 24, 2026

Adds RADIS documentation using MkDocs (GitHub Pages ready) and updates README with latest screenshots.

Summary by CodeRabbit

  • Documentation
    • Added comprehensive User and Admin guides, Developer contributing and Architecture docs
    • Created a RADIS landing page with a JavaScript slideshow, accompanying styles and behavior, and replaced external screenshot links with local assets
    • Added site configuration, navigation, theme, and documentation assets
  • Chores
    • Added automated documentation deployment workflow and docs build configuration/dependencies

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 24, 2026

📝 Walkthrough

Walkthrough

Adds an MkDocs documentation site (config, pages, slideshow JS/CSS, assets), a GitHub Actions workflow to build and deploy the site on pushes to main, and updates pyproject and README image paths. Changes are documentation, site assets, and CI; no runtime code modifications.

Changes

Cohort / File(s) Summary
CI / Deployment
​.github/workflows/deploy_mkdocs.yml
New GitHub Actions workflow "Deploy MkDocs" triggered on pushes to main; checks out repo, sets up Python 3.12, and runs uv commands to build and gh-deploy the MkDocs site.
MkDocs config & deps
mkdocs.yml, pyproject.toml
Added mkdocs.yml with Material theme, plugins, markdown extensions, navigation, and extra assets. pyproject.toml updated to add a docs dependency group and include "docs" in tool.uv default-groups.
Site landing & assets
docs/index.md, docs/assets/js/slideshow.js, docs/assets/css/slideshow.css
New landing page and slideshow assets; JS implements auto/manual slide cycling, ARIA announcements, cleanup; CSS styles layout, controls, and indicators.
User-facing docs
docs/user-docs/user-guide.md, docs/user-docs/admin-guide.md
Added comprehensive User Guide and Admin Guide covering features, workflows, admin tasks, and operational instructions.
Developer docs
docs/dev-docs/architecture.md, docs/dev-docs/contributing.md
Added Architecture and Contributing documentation describing system components, deployment topology, LLM configuration, dev setup, and contributor workflow.
Repository README
README.md
Replaced three external screenshot URLs with local resource paths.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant GH as GitHub Actions
  participant Runner as Ubuntu Runner
  participant UV as uv / MkDocs
  participant GH_Pages as GitHub Pages

  Dev->>GH: push to `main` (trigger)
  GH->>Runner: start "Deploy MkDocs" job
  Runner->>Runner: checkout repo, setup Python 3.12
  Runner->>UV: run uv to build docs and gh-deploy
  UV->>GH_Pages: publish site (gh-pages)
  GH_Pages-->>Dev: site updated
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇 I hopped through markdown, scripts, and flow,
Slides that shimmer, docs on show,
A workflow hums to lift them high,
Pages launched beneath the sky—
Tiny paws, big docs — away we go! 🥕✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Documentation of RADIS' is generic and overly broad, failing to specify what documentation is being added or the scope of changes. Consider a more specific title like 'Add MkDocs-based documentation site with user and developer guides' to clearly convey the main changes and scope.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @mhumzaarain, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the project's documentation by integrating a new MkDocs-based system. It provides detailed guides for various user roles, outlines the system's architecture, and establishes clear contribution guidelines. This change aims to improve clarity, onboarding, and overall understanding of the RADIS platform for all stakeholders.

Highlights

  • Comprehensive Documentation Added: Introduced extensive documentation for RADIS using MkDocs, covering user, administrator, and developer perspectives to provide a complete resource for the project.
  • Detailed Guides for All Roles: New guides include an 'Admin Guide' for system configuration and maintenance, a 'User Guide' explaining core functionalities like search, collections, and AI features, and 'Developer Documentation' detailing architecture and contribution processes.
  • MkDocs Integration and Configuration: Integrated MkDocs with the 'material' theme, including plugins for search and minification, and various markdown extensions to create a modern, GitHub Pages-ready documentation site.
  • Updated README and Local Assets: The main README.md file has been updated to reference new local screenshot assets, ensuring consistency and better management of visual content within the repository.
  • Dependency Updates for Documentation Build: Added necessary development dependencies, including 'mkdocs-material' and 'mkdocs-minify-plugin', and updated the 'uv.lock' file to support the new documentation build process.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/deploy_mkdocs.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@claude
Copy link
Copy Markdown

claude Bot commented Jan 24, 2026

Pull Request Review: Documentation of RADIS

Thank you for adding comprehensive MkDocs documentation to RADIS! This is a valuable addition that will significantly improve the project's usability and onboarding experience. Here's my detailed review:


✅ Strengths

1. Comprehensive Documentation Structure

  • Well-organized with clear separation between user docs and developer docs
  • Covers all essential topics: installation, architecture, user guide, admin guide, and contributing
  • Good use of MkDocs Material theme with sensible navigation structure

2. Quality Content

  • Architecture documentation provides excellent technical depth
  • User and admin guides are practical and actionable
  • Screenshots enhance understanding (properly stored in both docs/assets/ and resources/)
  • Good use of admonitions (e.g., Beta Status warning)

3. Proper Dependency Management

  • MkDocs dependencies correctly added to pyproject.toml dev dependencies
  • Version constraints specified (>=9.7.0 for mkdocs-material, >=0.8.0 for minify plugin)

🔍 Issues & Recommendations

1. GitHub Actions Workflow - Security Concern

File: .github/workflows/deploy_mkdocs.yml:6

on:
  push:
    branches:
      - main
      - docs_radis  # ⚠️ ISSUE

Issue: The workflow triggers on the docs_radis branch, which appears to be a feature/development branch. This could cause unintended deployments.

Recommendation: Remove docs_radis from the trigger branches. GitHub Pages deployments should only occur from the main branch:

on:
  push:
    branches:
      - main

2. Orphaned Documentation Files

Files: docs/Backups.md and docs/Maintenance.md

Issue: These files exist in the docs/ directory but are not included in the MkDocs navigation (mkdocs.yml:72-79). Users won't be able to discover them through the documentation site.

Recommendation: Either:

  • Add them to the navigation structure in mkdocs.yml:
    nav:
      - Home: index.md
      - User Documentation:
          - Admin Guide: user-docs/admin-guide.md
          - User Guide: user-docs/user-guide.md
      - Developer Documentation:
          - Contributing: dev-docs/contributing.md
          - Architecture: dev-docs/architecture.md
          - Maintenance: Maintenance.md
          - Backups: Backups.md
  • OR integrate their content into existing pages:
    • Move Backups content to admin-guide.md (already has a Backups section)
    • Move Maintenance content to contributing.md or create a dedicated dev-docs page

3. Duplicate Screenshot Files

Location: resources/screenshots/

Issue: The directory contains both old screenshots (Screenshot1.png, Screenshot2.png, etc.) and new ones (Screenshot01_radis.png, Screenshot02_radis.png, etc.).

Recommendation: Clean up old screenshot files to avoid confusion:

rm resources/screenshots/Screenshot[1-4].png

4. Documentation Quality Issues

a) Custom HTML/CSS/JS in Markdown (index.md:3-143)

Issue: The slideshow implementation uses inline <style> and <script> tags. While functional, this:

  • Violates separation of concerns
  • Makes the markdown file harder to maintain
  • Could cause issues with different MkDocs themes
  • Doesn't follow standard MkDocs patterns

Recommendation: Consider using MkDocs Material's built-in features or a plugin like mkdocs-glightbox for image galleries.

b) Inconsistent Terminology (admin-guide.md:164)

File: docs/user-docs/admin-guide.md:164

3. **Add Token**:
   - Click **Add Token**
   - **Owner**: Select the user who will own the token
   - **Token hashed**: Enter the hashed token value  # ⚠️ Confusing

Issue: Asking admins to "Enter the hashed token value" is unclear. Do they enter a raw token that gets hashed, or a pre-hashed value?

Recommendation: Clarify the token creation process. If RADIS auto-generates tokens, update the documentation accordingly.

c) Incomplete Information (user-guide.md:117)

File: docs/user-docs/user-guide.md:117

## RADIS Client

RADIS Client is a Python library that provides programmatic access to RADIS features without using the web interface.

To use the RADIS Client, you must have an API token provided by an administrator. For instructions on generating an API token, refer to the [Admin Guide](admin-guide.md).

Issue: The section mentions the RADIS Client but provides no usage examples or installation instructions.

Recommendation: Add basic usage information or reference the existing CLAUDE.md examples. For instance:

### Installation

```bash
pip install radis-client

Quick Example

from radis_client import RadisClient

client = RadisClient(
    server_url="https://radis.example.com",
    auth_token="your-token"
)

# Search reports
reports = client.search_reports(query="pneumonia")

For more examples, see our Developer Guide.


### 5. **Missing GitHub Pages Permission**
**File**: `.github/workflows/deploy_mkdocs.yml:8-9`

```yaml
permissions:
  contents: write

Issue: While contents: write is set, the workflow should also explicitly request pages: write and id-token: write for secure GitHub Pages deployment using the new deployment method.

Recommendation: Update to use the official GitHub Pages deployment action:

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
          cache: 'pip'
      
      - run: pip install mkdocs-material mkdocs-minify-plugin
      
      - run: mkdocs build
      
      - uses: actions/upload-pages-artifact@v3
        with:
          path: site/
      
      - uses: actions/deploy-pages@v4

6. Navigation Structure

File: mkdocs.yml:72-79

Recommendation: Consider a more descriptive navigation structure:

nav:
  - Home: index.md
  - User Documentation:
      - 'User Guide': user-docs/user-guide.md
      - 'Admin Guide': user-docs/admin-guide.md
  - Developer Documentation:
      - 'Contributing': dev-docs/contributing.md
      - 'Architecture': dev-docs/architecture.md

This improves readability and follows MkDocs best practices.


🔒 Security Considerations

  1. No hardcoded secrets detected
  2. Workflow permissions properly scoped (with recommended improvements above)
  3. No executable code in documentation (except the slideshow JS, which is benign)

📊 Test Coverage

Observation: This PR adds documentation only, no code changes requiring tests. However, consider:

  1. Link validation: Add a CI job to check for broken links in documentation
  2. Build validation: Ensure MkDocs builds successfully in CI before merging

Example CI addition:

- name: Build documentation
  run: |
    pip install mkdocs-material mkdocs-minify-plugin
    mkdocs build --strict

🎯 Performance Considerations

  • Minify plugin is correctly configured for production ✅
  • Screenshot file sizes are reasonable (largest is 189KB)
  • Consider adding lazy loading for images if documentation grows

✨ Summary

Overall Assessment: This is a high-quality documentation addition that will greatly benefit the project. The content is well-written, comprehensive, and professionally presented.

Required Changes:

  1. Remove docs_radis branch from workflow triggers
  2. Handle orphaned Backups.md and Maintenance.md files
  3. Clean up old screenshot files

Recommended Changes:

  1. Improve GitHub Actions workflow security
  2. Enhance RADIS Client documentation
  3. Clarify token creation instructions
  4. Consider replacing custom slideshow with MkDocs-native solution

Approval Status: ⚠️ Approve with minor changes recommended


Great work on this comprehensive documentation effort! 🎉

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces comprehensive documentation for the RADIS project using MkDocs, which is an excellent addition. The new documentation covers architecture, contribution guidelines, and user/admin guides. My review includes suggestions to improve the clarity, consistency, and maintainability of these new documentation files, such as refining markdown formatting, separating CSS/JS from content, and clarifying instructions for better user experience.

@@ -0,0 +1,89 @@
# **RADIS Architecture Documentation**
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The use of both a heading (#) and bold markdown (**...**) is redundant. For a top-level heading, using just # is sufficient and cleaner.

Suggested change
# **RADIS Architecture Documentation**
# RADIS Architecture Documentation


## Backend Architecture

**Django Web/API Server**: Central coordination engine providing REST API endpoints, authentication, user/session management, static assets, and task orchestration. Creates job/task records in PostgreSQL and schedules background work.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

For better document structure and consistency, it's recommended to use markdown subheadings (###) instead of just bolding the text for section titles. This will also ensure they appear in the table of contents. This applies to other similar headings in this file (e.g., PostgreSQL Database, Background Workers, etc.).

Suggested change
**Django Web/API Server**: Central coordination engine providing REST API endpoints, authentication, user/session management, static assets, and task orchestration. Creates job/task records in PostgreSQL and schedules background work.
### Django Web/API Server

Comment on lines +6 to +7
Code Style
We adhere to the Google Python Style [Guide](https://google.github.io/styleguide/pyguide.html).
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

This section title should be a markdown heading for consistency. This improves the document's structure and readability.

Suggested change
Code Style
We adhere to the Google Python Style [Guide](https://google.github.io/styleguide/pyguide.html).
## Code Style
We adhere to the Google Python Style [Guide](https://google.github.io/styleguide/pyguide.html).

This repository includes a [Dev Container](https://code.visualstudio.com/docs/devcontainers/create-dev-container).
If you open the project in VS Code after cloning, you should see a prompt:

“Reopen in Dev Container”
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

For UI elements or text that the user needs to type or see, it's better to use backticks (`...`) for code formatting instead of typographic quotes (“...“). This makes it clearer that it's a literal string from the UI.

Suggested change
Reopen in Dev Container
`Reopen in Dev Container`

Comment thread docs/index.md Outdated
Comment on lines +32 to +143
<style>
.slideshow-container {
position: relative;
max-width: 100%;
margin: 2rem auto;
overflow: hidden;
border-radius: 8px;
box-shadow: 0 6px 20px rgba(0,0,0,0.15);
}

.slides-wrapper {
display: flex;
transition: transform 0.6s ease-in-out;
width: 100%;
}

.slide {
min-width: 100%;
}

.slide img {
width: 100%;
display: block;
}

/* Navigation buttons */
.prev, .next {
cursor: pointer;
position: absolute;
top: 50%;
padding: 12px;
color: white;
font-size: 18px;
background-color: rgba(0,0,0,0.5);
user-select: none;
transform: translateY(-50%);
border-radius: 3px;
}

.next {
right: 10px;
}

.prev {
left: 10px;
}

.prev:hover, .next:hover {
background-color: rgba(0,0,0,0.8);
}

/* Dots */
.dot-container {
text-align: center;
position: absolute;
bottom: 10px;
width: 100%;
}

.dot {
cursor: pointer;
height: 12px;
width: 12px;
margin: 0 4px;
background-color: rgba(255,255,255,0.5);
border-radius: 50%;
display: inline-block;
}

.dot.active {
background-color: rgba(255,255,255,0.9);
}
</style>

<script>
let slideIndex = 0;
let timer;

function showSlide(index) {
const slidesWrapper = document.querySelector(".slides-wrapper");
const dots = document.querySelectorAll(".dot");
const totalSlides = dots.length;

if (index >= totalSlides) slideIndex = 0;
if (index < 0) slideIndex = totalSlides - 1;

slidesWrapper.style.transform = `translateX(-${slideIndex * 100}%)`;

dots.forEach(dot => dot.classList.remove("active"));
dots[slideIndex].classList.add("active");

clearTimeout(timer);
timer = setTimeout(() => {
slideIndex++;
showSlide(slideIndex);
}, 4000);
}

function changeSlide(n) {
slideIndex += n;
showSlide(slideIndex);
}

function currentSlide(n) {
slideIndex = n;
showSlide(slideIndex);
}

document.addEventListener("DOMContentLoaded", () => {
showSlide(slideIndex);
});
</script>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Embedding large blocks of CSS and JavaScript directly in a Markdown file is not recommended for maintainability. It's better to move this CSS and JavaScript into separate files (e.g., docs/assets/css/slideshow.css and docs/assets/js/slideshow.js) and include them in your mkdocs.yml configuration like this:

extra_css:
  - assets/css/slideshow.css
extra_javascript:
  - assets/js/slideshow.js

This separates content from presentation and behavior, making the documentation easier to manage.

## Installation

```terminal
Clone the repository: git clone https://github.com/openradx/radis.git
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The descriptive text Clone the repository: is not a command and can be confusing inside a terminal block. It's better to either move it outside the block or comment it out to clearly separate instructions from the commands to be executed.

Suggested change
Clone the repository: git clone https://github.com/openradx/radis.git
# Clone the repository
git clone https://github.com/openradx/radis.git


1. **Verify no active jobs**
2. **Enable maintenance mode**: In Django Admin, navigate to **Common** → **Project Settings** and check the "Maintenance mode" checkbox, then save
3. Navigate to Production folder
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The instruction Navigate to Production folder is a bit vague. It would be helpful to specify what or where this 'Production folder' is to avoid confusion for the administrator.

2. Click "Add Subscription" to set up a new subscription
3. Enter the Subscription Name and add filter questions.

- Write each question and select Accept when answer is Yes or No.\
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

There seems to be a stray backslash (\) at the end of this line. It should be removed.

Suggested change
- Write each question and select Accept when answer is Yes or No.\
- Write each question and select Accept when answer is Yes or No.

Comment thread mkdocs.yml
Comment on lines +64 to +65
- attr_list # required for Material’s grid layouts:contentReference[oaicite:15]{index=15}
- md_in_html # required for Material’s grid layouts:contentReference[oaicite:16]{index=16}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

These comments appear to be auto-generated artifacts and don't provide useful information. They should be removed for clarity.

  - attr_list
  - md_in_html

Copy link
Copy Markdown

@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: 3

🤖 Fix all issues with AI agents
In `@docs/index.md`:
- Around line 172-178: Replace the bolded section titles "**Developed at**" and
"**in Partnership with**" with proper Markdown headings (e.g., "## Developed at"
and "## in Partnership with" or the appropriate heading level used elsewhere in
the document) to satisfy MD036; keep the link and list content unchanged and use
ATX-style headings for consistency.

In `@docs/user-docs/admin-guide.md`:
- Around line 139-142: Update the example announcement under the
"<strong>Scheduled Maintenance:</strong>" snippet by replacing the past date
string "March 15, 2024 from 2:00 AM to 4:00 AM UTC" with a future date or a
neutral placeholder (e.g., "YYYY-MM-DD from HH:MM to HH:MM UTC") so the example
remains accurate; locate the "<strong>Scheduled Maintenance:</strong>" HTML
block in admin-guide.md and change the date text accordingly.

In `@docs/user-docs/user-guide.md`:
- Around line 96-104: Change the section heading "### 5. Extraction" to "### 5.
Extractions" and update any in-section occurrences of the singular term
"Extraction" (e.g., the header and the phrase "In the next step, search query
will be automatically generated based on these fields") to use the plural
"Extractions" where it refers to the feature name so it matches the overview;
keep the rest of the content unchanged except for matching pluralization for
consistency.
🧹 Nitpick comments (5)
docs/dev-docs/contributing.md (1)

6-7: Promote “Code Style” to a heading for TOC visibility.

This will improve MkDocs navigation and keeps the section structure consistent.

♻️ Proposed change
-Code Style
-We adhere to the Google Python Style Guide.
+## Code Style
+We adhere to the Google Python Style Guide.
.github/workflows/deploy_mkdocs.yml (1)

17-19: Pin the workflow Python version to the project’s supported runtime.

Using 3.x can change over time; aligning with requires-python avoids surprise build breaks.

♻️ Proposed change
-      - uses: actions/setup-python@v5
-        with:
-          python-version: 3.x
+      - uses: actions/setup-python@v5
+        with:
+          python-version: "3.12"
docs/dev-docs/architecture.md (1)

19-23: Use subheadings instead of bold labels for key components.

This improves TOC navigation and addresses markdownlint MD036.

♻️ Proposed change
-**Django Web/API Server**: Central coordination engine providing REST API endpoints, authentication, user/session management, static assets, and task orchestration. Creates job/task records in PostgreSQL and schedules background work.
-
-**PostgreSQL Database**: System of record storing user accounts, reports, collections, subscriptions, task queue entries, execution history, and search indexes. Uses pg_search and pg_vector extensions for hybrid search capabilities.
-
-**Background Workers**: Docker containers polling PostgreSQL for tasks, executing AI-powered extractions and subscription processing using LLMs.
+#### Django Web/API Server
+Central coordination engine providing REST API endpoints, authentication, user/session management, static assets, and task orchestration. Creates job/task records in PostgreSQL and schedules background work.
+
+#### PostgreSQL Database
+System of record storing user accounts, reports, collections, subscriptions, task queue entries, execution history, and search indexes. Uses pg_search and pg_vector extensions for hybrid search capabilities.
+
+#### Background Workers
+Docker containers polling PostgreSQL for tasks, executing AI-powered extractions and subscription processing using LLMs.
docs/index.md (1)

20-28: Use button controls for keyboard-accessible slideshow navigation.
Anchors without href are not focus-friendly; buttons give keyboard support by default.

♻️ Proposed update
-<a class="prev" onclick="changeSlide(-1)">❮</a>
-<a class="next" onclick="changeSlide(1)">❯</a>
+<button class="prev" type="button" aria-label="Previous slide" onclick="changeSlide(-1)">❮</button>
+<button class="next" type="button" aria-label="Next slide" onclick="changeSlide(1)">❯</button>
   .prev, .next {
     cursor: pointer;
     position: absolute;
     top: 50%;
     padding: 12px;
     color: white;
     font-size: 18px;
     background-color: rgba(0,0,0,0.5);
     user-select: none;
     transform: translateY(-50%);
     border-radius: 3px;
+    border: none;
+    font: inherit;
   }

Also applies to: 57-77

mkdocs.yml (1)

64-65: Remove stray contentReference[...] artifacts from comments.
They read like accidental injections and reduce clarity.

♻️ Proposed cleanup
-  - attr_list # required for Material’s grid layouts:contentReference[oaicite:15]{index=15}
-  - md_in_html # required for Material’s grid layouts:contentReference[oaicite:16]{index=16}
+  - attr_list # required for Material’s grid layouts
+  - md_in_html # required for Material’s grid layouts

Comment thread docs/index.md Outdated
Comment on lines +139 to +142
```html
<strong>Scheduled Maintenance:</strong> RADIS will be offline for maintenance on
<strong>March 15, 2024 from 2:00 AM to 4:00 AM UTC</strong>. Please plan your
extractions and subscriptions accordingly.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Update the example announcement date to avoid past-dated guidance.

The example uses March 15, 2024, which is in the past as of January 24, 2026. Consider a future date or a placeholder.

💡 Suggested tweak
-<strong>March 15, 2024 from 2:00 AM to 4:00 AM UTC</strong>.
+<strong>March 15, 2026 from 2:00 AM to 4:00 AM UTC</strong>.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```html
<strong>Scheduled Maintenance:</strong> RADIS will be offline for maintenance on
<strong>March 15, 2024 from 2:00 AM to 4:00 AM UTC</strong>. Please plan your
extractions and subscriptions accordingly.
🤖 Prompt for AI Agents
In `@docs/user-docs/admin-guide.md` around lines 139 - 142, Update the example
announcement under the "<strong>Scheduled Maintenance:</strong>" snippet by
replacing the past date string "March 15, 2024 from 2:00 AM to 4:00 AM UTC" with
a future date or a neutral placeholder (e.g., "YYYY-MM-DD from HH:MM to HH:MM
UTC") so the example remains accurate; locate the "<strong>Scheduled
Maintenance:</strong>" HTML block in admin-guide.md and change the date text
accordingly.

Comment on lines +96 to +104
### 5. Extraction

- Create extraction jobs to analyze multiple reports.
- Add extraction fields by specifying the following for each field:
- Name
- Output Type (Boolean, Text, or Numeric)
- Description
- In the next step, search query will be automatically generated based on these fields, which you can then review and refine.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Keep feature naming consistent (“Extractions” vs “Extraction”).

The overview uses “Extractions” (plural). Matching the section heading reduces confusion.

💡 Suggested tweak
-### 5. Extraction
+### 5. Extractions
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### 5. Extraction
- Create extraction jobs to analyze multiple reports.
- Add extraction fields by specifying the following for each field:
- Name
- Output Type (Boolean, Text, or Numeric)
- Description
- In the next step, search query will be automatically generated based on these fields, which you can then review and refine.
### 5. Extractions
- Create extraction jobs to analyze multiple reports.
- Add extraction fields by specifying the following for each field:
- Name
- Output Type (Boolean, Text, or Numeric)
- Description
- In the next step, search query will be automatically generated based on these fields, which you can then review and refine.
🤖 Prompt for AI Agents
In `@docs/user-docs/user-guide.md` around lines 96 - 104, Change the section
heading "### 5. Extraction" to "### 5. Extractions" and update any in-section
occurrences of the singular term "Extraction" (e.g., the header and the phrase
"In the next step, search query will be automatically generated based on these
fields") to use the plural "Extractions" where it refers to the feature name so
it matches the overview; keep the rest of the content unchanged except for
matching pluralization for consistency.

@claude
Copy link
Copy Markdown

claude Bot commented Jan 26, 2026

PR Review: Documentation with MkDocs

Thanks for adding comprehensive documentation to RADIS! Here is my detailed review:

Positive Aspects

  1. Comprehensive Coverage: The documentation covers all major aspects - user guide, admin guide, architecture, and contributing guidelines.

  2. Well-Structured: Clear separation between user docs and developer docs makes navigation intuitive.

  3. Good Technical Choices: MkDocs Material theme is professional and feature-rich, GitHub Actions workflow for automated deployment is properly configured, and custom slideshow for the landing page adds visual appeal.

  4. README Improvements: Switching from GitHub-hosted images to local paths in resources/screenshots/ is better for reliability.

Issues to Address

1. Orphaned Documentation Files (Priority: Medium)

Two markdown files exist in docs/ but are not included in the navigation: docs/Backups.md and docs/Maintenance.md

Recommendation: Either add these to mkdocs.yml nav section or move/merge them into existing docs. The content seems relevant for the admin guide.

2. Default Groups Configuration (Priority: Low)

In pyproject.toml line 91, the docs group is added to default-groups. This means every developer will install docs dependencies by default, even if they are not working on documentation.

Recommendation: Remove docs from default-groups and only install when needed.

3. Documentation Content Issues

Admin Guide (user-docs/admin-guide.md:166): Unclear token creation instructions - Token hashed: Enter the hashed token value needs clarification about how to generate tokens.

Contributing Guide (dev-docs/contributing.md:7): Broken markdown link format for Google Python Style Guide.

4. Accessibility Concerns (Priority: Medium)

The slideshow navigation uses Unicode arrows and dots without proper ARIA labels. Add aria-label attributes for screen readers on navigation buttons and dots.

5. CSS Improvements (Priority: Low)

Consider adding keyboard focus styles for accessibility on .prev:focus and .next:focus elements.

Testing Recommendations

  1. Test the MkDocs build locally
  2. Verify GitHub Pages deployment after merge
  3. Check all internal links work correctly
  4. Test slideshow on different screen sizes

Summary

This is a solid documentation PR that significantly improves the project. Main issues: orphaned docs files, documentation dependency in default groups, accessibility improvements needed for slideshow, and minor content clarifications.

Recommendation: Approve with minor changes requested. The issues identified are non-blocking but should be addressed before or shortly after merge.

Great work on the comprehensive documentation!

Copy link
Copy Markdown

@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

🤖 Fix all issues with AI agents
In `@docs/index.md`:
- Around line 67-68: Indent the paragraph following the admonition header '!!!
important "Beta Status"' so it is nested under the admonition (use four spaces
or a single tab before the content lines); specifically, add indentation to the
current line starting with "RADIS is currently..." so MkDocs/MkDocs-Material
recognizes it as the admonition body.
♻️ Duplicate comments (2)
docs/index.md (1)

57-65: Replace bold emphasis with headings to satisfy MD036.

Lines 57 and 61 use bold text (**Developed at**, **in Partnership with**) as pseudo-headings, which triggers markdownlint MD036. Use proper heading syntax for structural consistency.

mkdocs.yml (1)

65-66: Remove auto-generated artifact comments.

The comments :contentReference[oaicite:15]{index=15} and :contentReference[oaicite:16]{index=16} appear to be AI-generated artifacts and should be removed.

🧹 Proposed fix
-  - attr_list # required for Material's grid layouts:contentReference[oaicite:15]{index=15}
-  - md_in_html # required for Material's grid layouts:contentReference[oaicite:16]{index=16}
+  - attr_list  # required for Material's grid layouts
+  - md_in_html # required for Material's grid layouts
🧹 Nitpick comments (1)
docs/assets/js/slideshow.js (1)

16-40: Confusing parameter usage in showSlide — index is only used for bounds checks.

The index parameter is checked against bounds but the function relies on the global slideIndex being pre-set by callers. This works because all current call sites (changeSlide, currentSlide, and the timeout) update slideIndex before calling, but the function signature is misleading.

Consider setting slideIndex = index at the start for clarity:

♻️ Proposed fix
 function showSlide(index) {
   const slidesWrapper = document.querySelector(".slides-wrapper");
   const dots = document.querySelectorAll(".dot");
 
   // Guard: Exit early if slideshow markup is not present on this page
   if (!slidesWrapper || dots.length === 0) {
     return;
   }
 
   const totalSlides = dots.length;
+  slideIndex = index;
 
   if (index >= totalSlides) slideIndex = 0;
   if (index < 0) slideIndex = totalSlides - 1;

Comment thread docs/index.md
Comment on lines +67 to +68
!!! important "Beta Status"
RADIS is currently in an early phase of development. While we are actively building and refining its features, users should anticipate ongoing updates and potential breaking changes as the platform evolves. We appreciate your understanding and welcome feedback to help us shape the future of RADIS.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix admonition content indentation.

The admonition content on line 68 must be indented (typically 4 spaces) to be properly nested under the !!! important block. Without indentation, MkDocs will not render this correctly.

📝 Proposed fix
 !!! important "Beta Status"
-RADIS is currently in an early phase of development. While we are actively building and refining its features, users should anticipate ongoing updates and potential breaking changes as the platform evolves. We appreciate your understanding and welcome feedback to help us shape the future of RADIS.
+    RADIS is currently in an early phase of development. While we are actively building and refining its features, users should anticipate ongoing updates and potential breaking changes as the platform evolves. We appreciate your understanding and welcome feedback to help us shape the future of RADIS.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
!!! important "Beta Status"
RADIS is currently in an early phase of development. While we are actively building and refining its features, users should anticipate ongoing updates and potential breaking changes as the platform evolves. We appreciate your understanding and welcome feedback to help us shape the future of RADIS.
!!! important "Beta Status"
RADIS is currently in an early phase of development. While we are actively building and refining its features, users should anticipate ongoing updates and potential breaking changes as the platform evolves. We appreciate your understanding and welcome feedback to help us shape the future of RADIS.
🤖 Prompt for AI Agents
In `@docs/index.md` around lines 67 - 68, Indent the paragraph following the
admonition header '!!! important "Beta Status"' so it is nested under the
admonition (use four spaces or a single tab before the content lines);
specifically, add indentation to the current line starting with "RADIS is
currently..." so MkDocs/MkDocs-Material recognizes it as the admonition body.

Copy link
Copy Markdown

@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

🤖 Fix all issues with AI agents
In `@docs/user-docs/admin-guide.md`:
- Line 160: There's a spelling typo in the admin guide text: replace the
misspelled word "Naviagte" with "Navigate" in the sentence that references the
"Token Authentication" section (look for the line containing "**Naviagte** to
**Token Authentication**" or the "Token Authentication" heading) so the
instructions read "**Navigate** to **Token Authentication**".

Comment thread docs/user-docs/admin-guide.md Outdated
@claude
Copy link
Copy Markdown

claude Bot commented Jan 27, 2026

Pull Request Review - Documentation of RADIS

Thank you for this comprehensive documentation addition! This is a valuable contribution that will significantly improve the onboarding experience for users, admins, and developers. Below is my detailed review:


✅ Overall Assessment

Strengths:

  • Comprehensive documentation coverage for all user types (end users, admins, developers)
  • Professional MkDocs setup with Material theme and modern features
  • Interactive slideshow component adds visual appeal to the landing page
  • Well-structured navigation and clear content organization
  • Proper GitHub Actions workflow for automated deployment

🔧 Code Quality & Best Practices

JavaScript (slideshow.js)

Positive aspects:

  • Good use of guard clauses to prevent errors on pages without slideshow
  • Proper memory leak prevention with cleanup function
  • Event delegation pattern for navigation
  • Keyboard accessibility implementation (Enter/Space keys)
  • Clear JSDoc comments

Issues to address:

  1. Inline event handlers in HTML (index.md) - Security and maintainability concern

    • Lines using onclick attributes are problematic:
    <a class="prev" onclick="changeSlide(-1)" ...>
    <span class="dot" onclick="currentSlide(0)" ...>
    • Problem: Inline event handlers can be a Content Security Policy (CSP) violation and make the code harder to maintain
    • Solution: The event listeners are already attached in JavaScript (slideshow.js), so the onclick attributes should be removed from the HTML entirely

    Recommended fix in docs/index.md:

    <!-- Remove onclick attributes -->
    <a class="prev" aria-label="Previous slide"></a>
    <a class="next" aria-label="Next slide"></a>
    
    <span class="dot" role="button" tabindex="0" aria-label="Go to slide 1"></span>
    <!-- etc. -->
  2. Global function pollution

    • Functions changeSlide, currentSlide, and showSlide are in global scope
    • Recommendation: Wrap in IIFE or module pattern to avoid polluting global namespace:
    (function() {
      // All your slideshow code here
    })();
  3. Magic number

    • SLIDE_INTERVAL_MS = 4000 is good, but consider making it configurable via data attribute on the slideshow container

CSS (slideshow.css)

Positive aspects:

  • Clean, modern styling
  • Good use of CSS transitions
  • Responsive design considerations

Minor suggestions:

  1. Consider adding prefers-reduced-motion media query for users with motion sensitivity:

    @media (prefers-reduced-motion: reduce) {
      .slides-wrapper {
        transition: none;
      }
    }
  2. Navigation buttons might be hard to see on light images - consider adding a backdrop-filter or stronger background

GitHub Actions Workflow (deploy_mkdocs.yml)

Positive aspects:

  • Proper permissions configuration (least privilege)
  • Uses recent action versions
  • Efficient dependency installation with --only-group docs

Issues:

  1. Missing deploy key/permissions - The workflow uses mkdocs gh-deploy --force, which requires write access to the repository

    • The current permissions block grants pages: write but the gh-deploy command pushes to the gh-pages branch, which requires contents: write
    • Recommended fix:
    permissions:
      contents: write  # Changed from 'read' to 'write' for gh-deploy
      pages: write
      id-token: write
  2. Force flag concern - mkdocs gh-deploy --force will overwrite the gh-pages branch history

    • This is often acceptable for docs, but be aware it destroys git history
    • Consider removing --force flag unless you specifically need it
  3. No error handling or notifications - Consider adding a notification step on failure


🐛 Potential Bugs

  1. Slideshow race condition (minor)

    • If a user rapidly clicks navigation buttons, multiple timeouts could be created
    • Fix: Add debouncing or ensure clearTimeout(timer) is called consistently (already done, but could be more robust)
  2. Dot navigation index mismatch

    • In index.md, dots use 0-based indexing but there's potential confusion
    • The JavaScript correctly handles this, but ensure consistency
  3. Missing image alt text specificity

    • Alt text like "RADIS Screenshot 1" could be more descriptive for accessibility
    • Recommendation: Use descriptive alt text: "RADIS search interface showing hybrid search results" etc.

🔒 Security Concerns

  1. CSP violation risk (HIGH PRIORITY)

    • Inline onclick handlers in index.md will break if CSP headers are added
    • Should be removed as noted above
  2. No input sanitization needed - This is static documentation, so no XSS concerns

  3. Workflow security

    • Using pinned action versions is good practice
    • Consider using SHA pinning instead of version tags for maximum security:
    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11  # v4

⚡ Performance Considerations

  1. Image optimization (MEDIUM PRIORITY)

    • Screenshots are PNG files which can be large
    • Recommendation:
      • Optimize PNGs with tools like pngquant or optipng
      • Consider converting to WebP format with PNG fallback
      • Add width/height attributes to <img> tags to prevent layout shift
  2. Slideshow auto-advance

    • 4-second interval is reasonable
    • Consider pausing auto-advance when user hovers over slideshow or when tab is not visible:
    document.addEventListener('visibilitychange', () => {
      if (document.hidden) {
        clearTimeout(timer);
      } else {
        showSlide(slideIndex);
      }
    });
  3. CSS minification

    • The mkdocs-minify-plugin will handle HTML minification
    • CSS is minimal, so not a major concern

📚 Documentation Quality

Excellent work overall! The documentation is comprehensive and well-organized.

Minor suggestions:

  1. User Guide - Consider adding:

    • Example search queries with screenshots
    • Troubleshooting section for common user issues
    • Video tutorials or GIFs for complex workflows
  2. Admin Guide - Very thorough! Suggestions:

    • Add a "Common Issues" section
    • Include recommended hardware specs for different deployment sizes
    • Add monitoring/logging best practices
  3. Architecture docs - Well done! Consider:

    • Adding sequence diagrams for key workflows (e.g., extraction job flow)
    • Including performance benchmarks or capacity planning guidance
    • Adding a troubleshooting/debugging section
  4. Consistency

    • Some docs use "RADIS" vs "Radis" - standardize capitalization (prefer "RADIS" as it's an acronym)
    • Code blocks should specify language for syntax highlighting

🧪 Test Coverage

Concern: No tests for the slideshow JavaScript functionality

Recommendation:

  • Add basic JavaScript tests using Jest or similar
  • Test key functionality:
    • Slide navigation (next/prev)
    • Dot navigation
    • Auto-advance behavior
    • Keyboard accessibility
    • Edge cases (first/last slide)

Example test structure:

describe('Slideshow', () => {
  test('should navigate to next slide', () => {
    // Test implementation
  });
  
  test('should handle keyboard navigation', () => {
    // Test implementation
  });
});

📋 Additional Recommendations

  1. MkDocs configuration (mkdocs.yml)

    • Consider adding mike plugin for versioned documentation
    • Add git-revision-date-localized plugin to show last updated dates
  2. Documentation maintenance

    • Add a DOCUMENTATION.md file explaining how to:
      • Build docs locally
      • Add new pages
      • Update screenshots
      • Test changes before deployment
  3. Accessibility

    • Run the deployed docs through an accessibility checker (WAVE, axe)
    • Ensure all images have meaningful alt text
    • Test keyboard navigation thoroughly
  4. README.md changes

    • The PR modifies README.md to use local screenshots
    • Ensure the old screenshot URLs in README still work or add a deprecation notice

🎯 Action Items Summary

High Priority:

  1. Remove inline onclick handlers from index.md
  2. Fix GitHub Actions workflow permissions (contents: write)
  3. Optimize screenshot images for performance

Medium Priority:
4. Wrap JavaScript in IIFE/module to avoid global scope pollution
5. Add prefers-reduced-motion CSS media query
6. Improve image alt text descriptions
7. Add JavaScript tests for slideshow functionality

Low Priority:
8. Consider SHA-pinning GitHub Actions
9. Add visibility change handler for auto-advance
10. Expand documentation with examples and troubleshooting sections


✨ Conclusion

This is a high-quality PR that adds significant value to the project. The documentation is comprehensive, well-written, and properly structured. The slideshow implementation is functional and accessible.

The main issues are relatively minor and can be addressed quickly:

  • Security/CSP concerns with inline event handlers (easy fix)
  • Workflow permissions need adjustment
  • Image optimization for performance

Once these items are addressed, this PR will be ready to merge. Excellent work! 🎉


Approval Status: ⚠️ Approve with changes requested

Please address the high-priority items before merging. Feel free to tackle medium/low priority items in follow-up PRs if preferred.

@claude
Copy link
Copy Markdown

claude Bot commented Jan 27, 2026

Pull Request Review: Documentation of RADIS

Thank you for this comprehensive documentation PR! This is a valuable addition to the project. Below is my detailed review covering code quality, potential issues, and recommendations.


Strengths

  1. Comprehensive Documentation: Excellent coverage of user guides, admin guides, and developer documentation
  2. Professional Setup: MkDocs Material theme with proper navigation, search, and dark mode support
  3. Good Structure: Clear separation between user docs, admin docs, and developer docs
  4. Accessibility: Slideshow includes ARIA labels and keyboard navigation support
  5. CI/CD Integration: GitHub Actions workflow properly configured for automatic deployment

🔍 Issues & Recommendations

1. Security & Best Practices

Critical: Inline Event Handlers (docs/index.md:20-27)

The slideshow uses inline onclick attributes, which are considered a security anti-pattern and violate Content Security Policy (CSP) best practices.

Current code:

<a class="prev" onclick="changeSlide(-1)" aria-label="Previous slide"></a>
<span class="dot" onclick="currentSlide(0)" role="button" tabindex="0"></span>

Recommendation: Remove inline onclick handlers. The JavaScript file already has proper event listeners (docs/assets/js/slideshow.js:84-101), so the inline handlers are redundant and should be removed entirely.

Why this matters: If RADIS implements CSP headers (recommended for a medical application), inline event handlers will be blocked by default.


2. Code Quality Issues

JavaScript: Redundant Event Listeners (docs/assets/js/slideshow.js)

The slideshow.js already uses proper event delegation with addEventListener (lines 84-101), making the inline onclick attributes in index.md completely redundant.

CSS: Missing Responsive Design (docs/assets/css/slideshow.css)

The slideshow CSS lacks responsive breakpoints. On mobile devices:

  • Navigation arrows might overlap with content
  • Dots might be too small to tap easily
  • Images might not scale properly

Recommendation: Add responsive adjustments:

@media (max-width: 768px) {
  .prev, .next {
    padding: 8px;
    font-size: 14px;
  }
  .dot {
    height: 10px;
    width: 10px;
  }
}

3. Workflow Configuration

Missing Branch Protection (.github/workflows/deploy_mkdocs.yml:36)

The workflow uses --force flag which can overwrite history:

- name: Deploy MkDocs
  run: uv run mkdocs gh-deploy --force

Recommendation: Consider removing --force unless there's a specific reason. This prevents accidental overwrites of the gh-pages branch.

Missing Workflow Triggers

Currently only triggers on push to main. Consider adding:

on:
  push:
    branches: [main]
    paths:
      - 'docs/**'
      - 'mkdocs.yml'
      - '.github/workflows/deploy_mkdocs.yml'
  workflow_dispatch:  # Allow manual triggers

This prevents unnecessary deployments when docs aren't changed and allows manual deployment.


4. Documentation Content Issues

Inconsistent Command Examples

  • admin-guide.md:12 uses uv run cli stack-deploy (not documented in CLAUDE.md)
  • CLAUDE.md uses uv run cli compose-up

Recommendation: Ensure command consistency across all documentation. Verify that stack-deploy is the correct production command vs compose-up for development.

Incomplete API Token Instructions (admin-guide.md:160)

The section on "Naviagte" has a typo and the token management instructions could be more detailed.

Typo on line 160:

1. **Naviagte** to **Token Authentication**

Should be: Navigate

Missing Information

  • No troubleshooting section for MkDocs deployment
  • No mention of how to test docs locally before deployment
  • Missing information about contributing to documentation

5. Dependency Management

Development Dependencies Added to Default Groups (pyproject.toml:92)

default-groups = ["dev", "client", "docs"]

Concern: This means MkDocs dependencies will be installed by default even in production environments where they're not needed.

Recommendation: Keep docs as a separate optional group and only install when needed:

default-groups = ["dev", "client"]

Users who need docs can explicitly run: uv sync --group docs


6. Testing & Validation

No Documentation Build Validation

The main CI workflow (ci.yml) doesn't validate that documentation builds correctly. A broken link or malformed markdown could slip through.

Recommendation: Add a docs build check to CI:

- name: Validate documentation builds
  run: uv run --group docs mkdocs build --strict

7. Asset Organization

Duplicate Screenshots

Screenshots exist in both docs/assets/screenshots/ and resources/screenshots/. This creates maintenance burden.

Recommendation:

  • Keep screenshots in one location (resources/screenshots/)
  • Update docs/index.md to reference: ../resources/screenshots/
  • Update mkdocs.yml if needed to include the resources directory

📋 Suggested Changes Checklist

High Priority:

  • Remove inline onclick handlers from docs/index.md
  • Fix "Naviagte" typo in admin-guide.md:160
  • Remove "docs" from default-groups in pyproject.toml
  • Add docs build validation to CI workflow

Medium Priority:

  • Add responsive CSS for mobile devices
  • Remove --force flag from mkdocs deployment (or document why it's needed)
  • Add path filters to deploy_mkdocs.yml
  • Consolidate screenshot locations (remove duplication)
  • Add local docs testing instructions to contributing.md

Low Priority:

  • Add troubleshooting section for docs deployment
  • Standardize command examples across all docs
  • Add workflow_dispatch trigger for manual deployments

🎯 Overall Assessment

This is a well-structured documentation PR that significantly improves the project. The main concerns are:

  1. Security/CSP issues with inline event handlers (easy fix)
  2. Dependency management (docs shouldn't be in default groups)
  3. Missing CI validation for docs builds

The documentation content itself is comprehensive and well-organized. Once the inline event handlers are removed and the dependency groups are adjusted, this will be ready to merge.

Recommendation: Request changes to address the high-priority items before merging.


Great work on putting this together! Let me know if you have questions about any of these suggestions.

@mhumzaarain mhumzaarain added the documentation Improvements or additions to documentation label Jan 27, 2026
@claude
Copy link
Copy Markdown

claude Bot commented Jan 27, 2026

PR Review: Documentation of RADIS

Thank you for this comprehensive documentation addition! This is a valuable contribution that will significantly improve the onboarding experience for users and developers. Below is my detailed review:

✅ Strengths

  1. Comprehensive Coverage: Excellent documentation structure covering user guides, admin guides, and developer documentation
  2. Well-Organized: Clear separation between user-facing and developer-facing documentation
  3. GitHub Pages Ready: Proper MkDocs setup with Material theme for professional presentation
  4. Accessibility Improvements: Good keyboard navigation support and ARIA labels in slideshow.js

🔍 Code Quality Issues

1. Inline Event Handlers (Security & Best Practices)

Location: docs/index.md:20-27

The slideshow HTML uses inline onclick handlers:

<a class="prev" onclick="changeSlide(-1)" aria-label="Previous slide"></a>
<a class="next" onclick="changeSlide(1)" aria-label="Next slide"></a>
<span class="dot" onclick="currentSlide(0)" role="button" tabindex="0"></span>

Issue: Inline event handlers violate Content Security Policy (CSP) best practices and mix JavaScript with HTML.

Recommendation: The JavaScript in slideshow.js already properly attaches event listeners (lines 84-101). Remove the inline onclick attributes from the HTML since they're redundant. The event listeners are already attached via:

document.querySelector(".prev")?.addEventListener("click", () => changeSlide(-1));
document.querySelector(".next")?.addEventListener("click", () => changeSlide(1));
dots.forEach((dot, index) => {
  dot.addEventListener("click", () => currentSlide(index));
});

2. Documentation Dependency Scope

Location: pyproject.toml:89

default-groups = ["dev", "client", "docs"]

Issue: Documentation dependencies are added to default-groups, which means they'll be installed in all environments (dev, production, CI).

Recommendation: Documentation should only be installed when needed (i.e., when building docs). Consider:

  • Removing "docs" from default-groups
  • The workflow already uses uv sync --only-group docs, which is the correct approach
  • This prevents unnecessary dependencies in production containers

3. GitHub Actions Workflow Security

Location: .github/workflows/deploy_mkdocs.yml:36

run: uv run mkdocs gh-deploy --force

Issue: The --force flag bypasses safety checks when deploying to gh-pages branch.

Recommendation:

  • Consider removing --force flag unless there's a specific reason (e.g., rewriting history)
  • The workflow has appropriate permissions (pages: write), so force shouldn't be necessary
  • If force is needed, document why in a comment

4. Missing Workflow Concurrency Control

Location: .github/workflows/deploy_mkdocs.yml

Issue: Multiple simultaneous deployments could conflict if commits are pushed rapidly to main.

Recommendation: Add concurrency control:

concurrency:
  group: pages
  cancel-in-progress: false

🎨 Style & Maintainability

5. Line Length in Documentation

Some markdown files have very long lines (e.g., admin-guide.md:140-143). While not critical for markdown, consider breaking longer lines for better git diffs and readability in plain text editors.

6. Slideshow CSS: Missing Responsive Design

Location: docs/assets/css/slideshow.css

The slideshow doesn't have responsive breakpoints for smaller screens. Consider adding media queries to:

  • Adjust navigation button size on mobile
  • Reduce dot size on small screens
  • Ensure images scale properly

7. JavaScript Memory Leak Potential

Location: docs/assets/js/slideshow.js:106

The beforeunload cleanup is good, but consider also cleaning up when navigating away in single-page app contexts. MkDocs uses client-side navigation, so add:

// For MkDocs instant loading/SPA navigation
document.addEventListener('DOMContentSwitch', cleanupSlideshow);

📝 Content Suggestions

8. Architecture Documentation

Location: docs/dev-docs/architecture.md:60

The model name reference "SmolLM2-135M-Instruct" might become outdated. Consider adding a note that this is the default at time of writing and may change.

9. Contributing Guide

Location: docs/dev-docs/contributing.md:16

The localhost URL assumes default port. Consider mentioning that the port may vary based on configuration.

10. Admin Guide - Update Process

Location: docs/user-docs/admin-guide.md:17-29

Excellent detailed update process! Consider adding:

  • Expected downtime estimate
  • Rollback procedure if update fails
  • How to verify the update was successful

🧪 Testing

11. Missing Tests for New Code

The slideshow JavaScript has no automated tests. While this is documentation code, consider:

  • Adding basic integration tests for slideshow functionality
  • Testing that MkDocs builds successfully in CI
  • Validating that all internal links in docs are valid

📊 Performance

12. Image Optimization

Location: Screenshot PNG files in docs/assets/screenshots/ and resources/screenshots/

Binary files were added but their sizes aren't visible in the diff. Ensure:

  • Images are optimized (compressed)
  • Consider using WebP format for better compression
  • Add image width/height attributes to prevent layout shift

13. Slideshow Performance

The slideshow auto-advances every 4 seconds, which could be distracting for users trying to read content. Consider:

  • Adding pause-on-hover functionality
  • Adding a pause/play button
  • Respecting prefers-reduced-motion media query

🔒 Security

14. Workflow Permissions

Location: .github/workflows/deploy_mkdocs.yml:8-11

permissions:
  contents: read
  pages: write
  id-token: write

Status: ✅ Good! Minimal necessary permissions are correctly specified.

15. No Sanitization Needed for Static Content

The documentation is static and doesn't accept user input, so XSS risks are minimal. However, ensure that:

  • MkDocs version is kept up to date
  • Any future dynamic content is properly sanitized

📋 Summary

Overall Assessment: This is a solid documentation addition with good structure and content. The main concerns are:

  1. High Priority: Remove inline event handlers (security/best practices)
  2. Medium Priority: Remove "docs" from default-groups (reduce dependency bloat)
  3. Medium Priority: Add concurrency control to workflow
  4. Low Priority: Consider responsive design for slideshow

Recommended Changes

# docs/index.md
-<a class="prev" onclick="changeSlide(-1)" aria-label="Previous slide">❮</a>
-<a class="next" onclick="changeSlide(1)" aria-label="Next slide">❯</a>
+<a class="prev" aria-label="Previous slide">❮</a>
+<a class="next" aria-label="Next slide">❯</a>

-<span class="dot" onclick="currentSlide(0)" role="button" tabindex="0" aria-label="Go to slide 1"></span>
+<span class="dot" role="button" tabindex="0" aria-label="Go to slide 1"></span>
# (repeat for all dots)

# pyproject.toml
-default-groups = ["dev", "client", "docs"]
+default-groups = ["dev", "client"]

# .github/workflows/deploy_mkdocs.yml
 on:
   push:
     branches:
       - main
+
+concurrency:
+  group: pages
+  cancel-in-progress: false

# .github/workflows/deploy_mkdocs.yml
-        run: uv run mkdocs gh-deploy --force
+        run: uv run mkdocs gh-deploy

Great work overall! The documentation structure is excellent and will be very helpful for users and contributors. 🎉

@claude
Copy link
Copy Markdown

claude Bot commented Jan 27, 2026

Pull Request Review: Documentation of RADIS

Thank you for this comprehensive documentation effort! This is a valuable addition to the project. Here's my detailed review:


✅ Strengths

  1. Comprehensive Documentation Structure

    • Well-organized user, admin, and developer documentation
    • Clear separation of concerns between different audience types
    • Good coverage of features and workflows
  2. Professional MkDocs Setup

    • Material theme with proper theming (light/dark mode)
    • Good use of navigation features and search configuration
    • Proper repository integration with edit links
  3. Automation

    • GitHub Actions workflow for automatic deployment
    • Clean integration with uv for dependency management
  4. Visual Enhancement

    • Screenshot slideshow adds professional touch to landing page
    • Proper organization of screenshot assets

🔍 Issues & Recommendations

Critical

  1. Workflow Security - Missing Environment Configuration

    • deploy_mkdocs.yml:36: The workflow uses mkdocs gh-deploy --force without configuring GitHub Pages
    • Issue: This may fail on first run if Pages isn't configured or uses wrong branch
    • Recommendation: Add a step to configure GitHub Pages environment or document manual setup requirements
    • Consider using the official actions/deploy-pages action for better control
  2. JavaScript Memory Leak Risk

    • docs/assets/js/slideshow.js:106: While beforeunload cleanup exists, the timer continues running even when navigating between MkDocs pages
    • Issue: In single-page navigation (MkDocs Material's instant loading), beforeunload doesn't fire between page changes
    • Recommendation: Consider using MkDocs Material's navigation events or moving slideshow to only the landing page with better lifecycle management

High Priority

  1. Slideshow Accessibility Issues

    • docs/assets/css/slideshow.css:31-56: Navigation buttons lack proper ARIA labels and roles
    • docs/index.md:20-21: Prev/Next buttons use only visual indicators (❮/❯) without text alternatives
    • Recommendations:
      • Add role="button", aria-label, and tabindex="0" to .prev/.next elements
      • Add keyboard support (arrows already work via dots, but prev/next need it too)
      • Add aria-live="polite" region to announce slide changes to screen readers
  2. Incomplete Documentation

    • docs/dev-docs/contributing.md:7: Broken link formatting - [Guide](URL) instead of proper markdown
    • docs/user-docs/admin-guide.md:8: Uses terminal code block type - should be bash for proper syntax highlighting
    • docs/dev-docs/architecture.md: Missing information about testing strategy, deployment considerations
  3. Dependency Management Issue

    • pyproject.toml:92: Added docs to default-groups
    • Issue: This installs MkDocs dependencies for all developers even if not working on docs
    • Recommendation: Keep docs as optional dependency group, install only when needed with uv sync --group docs

Medium Priority

  1. CSS Specificity & Maintainability

    • docs/assets/css/slideshow.css: Uses magic numbers (12px, 10px, 4px) without CSS variables
    • Recommendation: Define CSS custom properties for consistency:
      :root {
        --dot-size: 12px;
        --dot-spacing: 4px;
        --nav-padding: 10px;
      }
  2. Documentation Consistency

    • Mix of command formats: some use uv run cli <cmd>, others use uv run <cmd>
    • docs/user-docs/admin-guide.md:87: Refers to "Output field" but this could be clearer as "extraction output field"
    • Inconsistent capitalization in headers
  3. Missing Error Handling

    • docs/assets/js/slideshow.js:30: No error handling if translateX fails or images don't load
    • Consider adding image load error handling and fallback states

Low Priority

  1. Performance Optimizations

    • Consider lazy loading images in slideshow to improve initial page load
    • Slideshow images could benefit from responsive image handling (srcset)
    • MkDocs minify plugin is good, but consider adding cache headers documentation
  2. Documentation Gaps

    • No troubleshooting section for documentation builds
    • Missing information about local docs preview: uv run mkdocs serve
    • No mention of docs contribution workflow
  3. README.md Path Changes

    • Changed from GitHub-hosted URLs to local paths
    • Question: Will these render correctly in GitHub README? (They should, but worth verifying)

🔒 Security Considerations

  • Workflow Permissions: Properly scoped with minimal permissions ✅
  • No sensitive data exposure in docs
  • Force push in gh-deploy: The --force flag is appropriate for docs deployment ✅

📊 Test Coverage

  • Missing: No tests for slideshow JavaScript functionality
  • Recommendation: Consider adding basic validation that MkDocs builds successfully in CI

📝 Suggested Additions

  1. Add CI Check for Docs Build

    - name: Test docs build
      run: uv run mkdocs build --strict
  2. Add Docs Development Section to Contributing Guide

    ## Working with Documentation
    
    Preview docs locally:
    ```bash
    uv sync --group docs
    uv run mkdocs serve

    Build docs:

    uv run mkdocs build --strict
    
    
  3. Consider Adding a DOCS.md with:

    • How to preview locally
    • Documentation structure explanation
    • Screenshot update procedures
    • Style guide for documentation

🎯 Summary

This is solid documentation work that significantly improves the project's usability. The main concerns are:

  1. Must fix before merge: Workflow may fail without proper Pages setup, broken link in contributing.md
  2. Should fix before merge: Accessibility issues in slideshow, dependency management
  3. Can fix in follow-up: Performance optimizations, additional documentation sections

Recommendation: Request changes to address critical and high-priority issues. The rest can be addressed in follow-up PRs.

Overall assessment: Approve with changes requested ⚠️

Great work on getting this together! The documentation structure is excellent and will be very helpful for users and contributors.

Copy link
Copy Markdown

@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

🤖 Fix all issues with AI agents
In `@docs/index.md`:
- Around line 3-30: Update the slideshow markup to be semantic and accessible:
change the interactive prev/next elements (class="prev" and class="next") to use
actual <button> elements or add role="button" and tabindex="0", ensure they have
clear aria-labels (e.g., "Previous slide" / "Next slide"), add role="region" or
aria-label on the slides container (class="slides-wrapper") and role="group" or
role="list" on each slide (class="slide") with aria-live or aria-hidden toggling
so screen readers announce slide changes, add aria-current or aria-label
attributes to the dot indicators (class="dot" data-slide-index="...") and make
them focusable (tabindex="0") with accessible labels, and implement keyboard
handlers (Left/Right and Enter/Space) for class="prev", class="next", and
class="dot" interactions to enable full keyboard navigation and visible keyboard
navigation hints.
🧹 Nitpick comments (1)
docs/index.md (1)

7-17: Consider more descriptive alt text for screenshots.

The alt text for the slideshow images is generic ("RADIS Screenshot 1", etc.). While functional, more descriptive alt text would improve accessibility by explaining what each screenshot demonstrates (e.g., "RADIS search interface with filters", "Report collection view", etc.).

Comment thread docs/index.md Outdated
@claude
Copy link
Copy Markdown

claude Bot commented Jan 29, 2026

PR Review: Documentation with MkDocs

Summary

This PR adds comprehensive MkDocs documentation with GitHub Pages deployment. Overall, this is a well-structured addition that will significantly improve the project's documentation. The implementation is clean and follows good practices.

✅ Strengths

Documentation Structure

  • Comprehensive coverage: User guide, admin guide, architecture, and contributing docs cover the essential areas
  • Clear organization: Logical separation between user docs and developer docs
  • Good use of MkDocs Material: Leverages Material theme features effectively (tabs, search, code highlighting)

Code Quality

  • Clean JavaScript: The slideshow implementation (docs/assets/js/slideshow.js) demonstrates excellent practices:
    • Proper cleanup for SPA navigation with MutationObserver
    • Event listener tracking to prevent memory leaks
    • Accessibility support with ARIA attributes and keyboard navigation
    • Well-documented with JSDoc comments
  • Well-structured CSS: Uses CSS custom properties for maintainability
  • Accessibility-first: Includes screen reader support, focus indicators, and semantic HTML

GitHub Actions Workflow

  • Appropriate use of uv for dependency management
  • Correct permissions setup for GitHub Pages
  • Good use of --only-group docs to install only documentation dependencies

🔍 Issues & Suggestions

1. Security: GitHub Actions Workflow (MODERATE)

Location: .github/workflows/deploy_mkdocs.yml:36

The workflow uses --force flag with mkdocs gh-deploy:

- name: Deploy MkDocs
  run: uv run mkdocs gh-deploy --force

Issue: The --force flag performs a force push, which can overwrite the gh-pages branch history. While this works, it's not the safest approach.

Recommendation: Remove --force unless there's a specific reason for it. MkDocs can deploy without force pushing:

- name: Deploy MkDocs
  run: uv run mkdocs gh-deploy

2. Documentation Content Issues (MINOR)

Location: docs/user-docs/admin-guide.md:11

uv run cli stack-deploy  # builds and starts Docker containers

Issue: This command is mentioned in the installation section, but according to CLAUDE.md, stack-deploy is for production while compose-up is for development. This might confuse new users about which command to use.

Recommendation: Clarify the context or split into development vs production installation sections.


Location: docs/dev-docs/contributing.md:7

Code Style
We adhere to the Google Python Style [Guide](https://google.github.io/styleguide/pyguide.html).

Issue: Missing heading level (should be ## instead of plain text).

Recommendation:

## Code Style
We adhere to the Google Python Style [Guide](https://google.github.io/styleguide/pyguide.html).

3. Slideshow Implementation (MINOR)

Location: docs/assets/js/slideshow.js:158

Observation: The MutationObserver watches the entire document.body for changes:

mutationObserver.observe(document.body, {
  childList: true,
  subtree: true,
});

Potential Issue: This could be performance-intensive on pages with frequent DOM changes, though for documentation pages it's likely fine.

Recommendation (optional optimization): Consider observing a closer parent element if one exists, or add a check to only observe when on the home page.

4. Missing Alt Text Quality (MINOR)

Location: docs/index.md:7-17

The screenshot alt texts are generic:

<img src="assets/screenshots/Screenshot01_radis.png" alt="RADIS Screenshot 1">

Recommendation: Provide descriptive alt text that explains what each screenshot shows:

<img src="assets/screenshots/Screenshot01_radis.png" alt="RADIS search interface showing report list with filters">
<img src="assets/screenshots/Screenshot02_radis.png" alt="RADIS report detail view with metadata">

5. MkDocs Configuration (SUGGESTION)

Location: mkdocs.yml:65

The comment formatting has references that look like artifacts:

- attr_list # required for Material's grid layouts:contentReference[oaicite:15]{index=15}

Issue: The contentReference[oaicite:15]{index=15} appears to be an artifact from copying documentation.

Recommendation: Clean up the comments:

- attr_list # required for Material's grid layouts
- md_in_html # required for Material's grid layouts

🧪 Testing Considerations

  • No test changes needed: This is pure documentation
  • ⚠️ Manual testing recommended: Verify the GitHub Pages deployment works as expected after merge
  • ⚠️ Accessibility testing: Consider running automated accessibility tests on the deployed documentation

📊 Performance Considerations

  • Bundle size: MkDocs Material is feature-rich but has a reasonable footprint for documentation
  • Build time: GitHub Actions build time should be acceptable (typically 1-2 minutes)
  • Slideshow: Auto-advancing every 4 seconds is reasonable; cleanup implementation prevents memory leaks

🔒 Security Review

  • ✅ No security vulnerabilities detected
  • ✅ No secrets or credentials exposed
  • ✅ GitHub Actions permissions properly scoped
  • ⚠️ Minor: Consider removing --force flag from deployment

📈 Code Metrics

  • Files changed: 24 (mostly new documentation and assets)
  • Additions: 1,231 lines
  • Deletions: 4 lines
  • Binary files: 8 screenshots (reasonable for documentation)

✅ Final Recommendation

APPROVED with minor suggestions

This is a solid PR that adds valuable documentation infrastructure. The code quality is high, accessibility is well-considered, and the documentation content is comprehensive.

Before Merging:

  1. MUST: Fix the heading in contributing.md:7
  2. SHOULD: Remove --force from the GitHub Actions workflow unless there's a specific need
  3. SHOULD: Clean up the contentReference artifacts in mkdocs.yml
  4. NICE TO HAVE: Improve screenshot alt text descriptions
  5. NICE TO HAVE: Clarify installation commands for dev vs prod

After Merging:

  1. Verify GitHub Pages deployment succeeds
  2. Check that the documentation site is accessible at the expected URL
  3. Test navigation and slideshow functionality on the live site

Great work on bringing comprehensive documentation to RADIS! 🎉

Copy link
Copy Markdown

@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: 2

🤖 Fix all issues with AI agents
In `@docs/assets/js/slideshow.js`:
- Around line 89-100: The cleanup function cleanupSlideshow should also reset
the slideshow position by resetting slideIndex to its initial value to avoid
resurrecting the previous position on navigation; update cleanupSlideshow to set
slideIndex back to the slideshow's initial state (e.g., slideIndex = 0 or the
initialSlideIndex variable if one exists) alongside clearing timer and removing
eventListeners.
- Around line 172-177: The slideshow currently only cleans up via the deprecated
DOMContentSwitch and never re-initializes on MkDocs Material instant navigation;
replace the DOMContentSwitch usage by subscribing to the Material document$
observable and refactor the initialization into a reusable function (e.g.,
extract current setup code into initSlideshow or similar) so you can call it
from both the DOMContentLoaded handler and document$.subscribe(), and call
cleanupSlideshow before re-initializing; remove the
document.addEventListener("DOMContentSwitch", ...) line and add a
document$.subscribe(...) that runs cleanupSlideshow then initSlideshow to handle
SPA navigation.
🧹 Nitpick comments (1)
docs/assets/js/slideshow.js (1)

48-55: Consider using only one of aria-pressed or aria-selected.

Both attributes are set on the dot indicators, but they serve different semantic purposes: aria-pressed is for toggle buttons, while aria-selected is for tabs or listbox items. Using both simultaneously may confuse assistive technologies.

Choose one based on the dots' role:

  • If dots are buttons: use aria-pressed
  • If dots are tabs/tablist: use aria-selected
♻️ Suggested fix (assuming button role)
   dots.forEach((dot, i) => {
     dot.classList.remove("active");
     dot.setAttribute("aria-pressed", "false");
-    dot.setAttribute("aria-selected", "false");
   });
   dots[slideIndex].classList.add("active");
   dots[slideIndex].setAttribute("aria-pressed", "true");
-  dots[slideIndex].setAttribute("aria-selected", "true");

Comment on lines +89 to +100
function cleanupSlideshow() {
// Clear the timer
if (timer) {
clearTimeout(timer);
timer = null;
}

// Remove all tracked event listeners
eventListeners.forEach(({ element, event, handler }) => {
element.removeEventListener(event, handler);
});
eventListeners = [];
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Reset slideIndex during cleanup.

When the slideshow is cleaned up (e.g., during SPA navigation), slideIndex retains its previous value. If the user navigates back to the page, the slideshow may start at an unexpected position.

🔧 Proposed fix
 function cleanupSlideshow() {
   // Clear the timer
   if (timer) {
     clearTimeout(timer);
     timer = null;
   }
+
+  // Reset slide index for potential re-initialization
+  slideIndex = 0;

   // Remove all tracked event listeners
🤖 Prompt for AI Agents
In `@docs/assets/js/slideshow.js` around lines 89 - 100, The cleanup function
cleanupSlideshow should also reset the slideshow position by resetting
slideIndex to its initial value to avoid resurrecting the previous position on
navigation; update cleanupSlideshow to set slideIndex back to the slideshow's
initial state (e.g., slideIndex = 0 or the initialSlideIndex variable if one
exists) alongside clearing timer and removing eventListeners.

Comment thread docs/assets/js/slideshow.js
@medihack medihack merged commit ad0989f into main Jan 30, 2026
10 checks passed
@medihack medihack deleted the docs_radis branch January 30, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants