Skip to content

Create Resources section with migration guides, comparisons, and restructured content#3503

Open
qdequele wants to merge 33 commits intomainfrom
create-resources-section
Open

Create Resources section with migration guides, comparisons, and restructured content#3503
qdequele wants to merge 33 commits intomainfrom
create-resources-section

Conversation

@qdequele
Copy link
Member

@qdequele qdequele commented Mar 12, 2026

Summary

Resources tab restructure

  • Created a new Resources tab with structured groups: Self-hosting, Demos, Migration, Comparisons, Under the hood, Project info
  • Moved 28 documentation pages from Learn/Guides into Resources
  • Added 30 new pages: comparisons (9), demos (13), deployment guides (4), security, internals
  • Restructured self_hosting/ with deployment/, security/, performance/ subdirectories

Migration guides (new)

Added comprehensive migration guides with JavaScript, Python, and Ruby code examples for:

  • Algolia — Settings comparison table with 15+ parameter mappings, organized into 7 categories
  • Elasticsearch — Data export (Point in Time API), Query DSL mapping, analyzer simplification
  • Qdrant — Vector strategy (auto-embedder vs keep vectors), hybrid search promotion
  • MongoDB Atlas Search — Aggregation pipeline to REST API comparison, ObjectId handling
  • PostgreSQL — tsvector/tsquery elimination, pgvector to auto-embedder, PostGIS geo conversion
  • Supabase — Supabase client method mapping, Edge Function sync, Database Webhooks

Content quality improvements

  • Rewrote FAQ for cloud-first approach
  • Updated language page with full Charabia support table and multilingual hybrid search section
  • Rewrote Typesense comparison from Meilisearch perspective
  • Added ranking vs BM25 explainer page
  • Renamed Hannoy page to Vector Storage DiskANN with proper context
  • Fixed content accuracy issues across deployment guides and resources

Postman integration revamp

  • Rewrote Postman getting started page to use OpenAPI spec import workflow instead of the old Postman collection
  • Added 5 new annotated screenshots for the import process
  • Removed references to the deprecated meilisearch-postman collection

Redirect audit and cleanup

  • Added scripts/check-missing-redirects.mjs that uses Fathom Analytics traffic data + production sitemap to audit redirects
  • Removed 206 unused redirects (zero traffic in 90 days)
  • Added 49 missing redirects for old URLs that still receive traffic
  • Net result: 305 -> 148 redirects, all with active traffic
  • Added /check-redirects slash command to re-run this audit

Broken link fixes

  • Fixed 7 broken /learn/ internal links across language, ranking, qdrant migration, and personalized search pages

Developer tooling

  • Added documentation structure guidance to CLAUDE.md
  • Created 6 slash commands for common doc tasks

Test plan

  • Verify Resources tab renders correctly in Mintlify with all groups
  • Verify all 6 migration guides render with CodeGroup language tabs
  • Spot-check moved pages load at new URLs
  • Verify redirect audit script reports 0 missing / 0 unused
  • Verify old URLs redirect correctly on deploy
  • Run mintlify broken-links after deploy to confirm no regressions

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Added a new top-level "Resources" tab, removed several Learn groups/pages, migrated many internal links and redirects from /learn/* to /resources/*, and introduced numerous new Resources pages (comparisons, demos, deployment, internals, self-hosting, migration, and help) plus related routing updates.

Changes

Cohort / File(s) Summary
Navigation & Routing
docs.json
Inserted new top-level Resources tab with grouped pages; removed Learn groups/pages; added extensive redirects mapping legacy /learn/* and guide paths to /resources/*.
Global link updates
guides/.../*.mdx, home.mdx, learn/.../*.mdx, reference/.../*.mdx, resources/help/*.mdx
Repointed internal hyperlinks and anchors from old /learn/* and /learn/resources/* locations to new /resources/* targets; minor wording/format fixes.
Resources — Self-hosting & Configuration
resources/self_hosting/configuration.mdx, resources/self_hosting/*, resources/self_hosting/data_backup/*, resources/self_hosting/webhooks.mdx, resources/self_hosting/performance/*
Expanded configuration doc with many experimental flags, env/CLI options, S3 role/web-identity details; changed default payload values; updated dumps/snapshots guidance; adjusted webhook payload shape; bumped Docker image tag.
Deployment guides
resources/self_hosting/deployment/*.mdx
Added production deployment guides for AWS, Azure, DigitalOcean, and GCP (systemd, Nginx reverse proxy, TLS/Certbot, firewall/network steps).
Resources — Demos & Overview
resources/demos/*.mdx, resources/demos/overview.mdx
Added many demo pages and a demos overview (e.g., ecommerce, image, geo, music, voice, typo tolerance, SaaS, tenant tokens) with live-demo links, technical highlights, and CardGroup navigation.
Resources — Comparisons
resources/comparisons/*.mdx
Added multiple comparison pages (Algolia, Elasticsearch, MongoDB, OpenSearch, Pinecone, PostgreSQL, Qdrant, Typesense, Alternatives) with quick comparison tables and migration pointers.
Resources — Internals
resources/internals/*.mdx
Added internals docs (bucket_sort, hannoy, prefix, storage, datatypes updates) and a disabling-prefix-search section.
Migration & Updating
resources/migration/*.mdx
Added previous-docs guide; updated migration links; modified algolia_migration (package version removal, BATCH_SIZE increased, facet mapping changes); heading/anchor tweaks in updating guide.
Help, FAQ & Experimental features
resources/help/*.mdx, resources/help/experimental_features_overview.mdx, resources/help/faq.mdx
Rewrote many help/FAQ links to /resources/help/*; updated experimental feature activation references to new self-hosting configuration; wording and anchor fixes.
Errors, limits & reference updates
reference/errors/error_codes.mdx, resources/help/known_limitations.mdx
Updated error docs to point to new resource anchors; adjusted several hard limits (e.g., filter depth, task DB size) and clarified limitation descriptions.
Guides & SDK links
guides/.../*.mdx, guides/front_end/front_end_integration.mdx, guides/docker.mdx
Updated multiple guide links to resources paths; added a front-end integration tutorial (instant-meilisearch + instantsearch.js); other small link/path updates.
Security & Keys
resources/self_hosting/security/master_api_keys.mdx
Added master API keys documentation (master vs API keys, create/reset, examples, best practices).

Sequence Diagram(s)

(No sequence diagrams generated.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐇 I hopped through folders, nudged each link anew,
From Learn into Resources I carried the view,
Demos, guides, and deploys now nest in their place,
Redirects lined up tidy, each path finds its space,
A rabbit's small hop — the docs wore a brighter hue.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The pull request title accurately describes the main objective: creating a Resources section with content migration, comparisons, and restructuring from learn/ paths to new resources/ organization.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch create-resources-section

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.

Copy link

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

Caution

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

⚠️ Outside diff range comments (1)
resources/self_hosting/install_meilisearch_locally.mdx (1)

50-61: ⚠️ Potential issue | 🟠 Major

Update Docker image version or remove "latest stable release" claim.

The text on line 50 claims "latest stable release," but the pinned version (v1.37) is outdated. Docker Hub currently offers v1.38.2 as the latest stable release. Additionally, guides/docker.mdx explicitly warns against using the :latest tag to avoid inconsistencies across machines.

Update the commands to use v1.38.2, or remove the "latest stable release" phrase and note the specific version being documented.

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

In `@resources/self_hosting/install_meilisearch_locally.mdx` around lines 50 - 61,
The documentation claims "latest stable release" but pins the Docker image to
getmeili/meilisearch:v1.37; update the image tag to the current stable
(getmeili/meilisearch:v1.38.2) and change the text to either remove the "latest
stable release" phrase or explicitly state the documented version (v1.38.2) so
the docs and the docker pull/run lines (the getmeili/meilisearch:v1.37 strings)
stay consistent; ensure the run and pull commands both use the same updated tag.
🧹 Nitpick comments (7)
resources/migration/algolia_migration.mdx (1)

120-125: Consider adding a note about payload size limits.

The batch size increase from 1,000 to 100,000 improves performance for typical small documents. However, the default Meilisearch payload limit is 100MB. If documents are large (for example, with lengthy text fields), a batch of 100,000 could exceed this limit and cause failures.

Consider adding a brief note advising users to adjust BATCH_SIZE based on their average document size, or linking to the payload limit configuration.

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

In `@resources/migration/algolia_migration.mdx` around lines 120 - 125, Add a
short note near the BATCH_SIZE example warning that Meilisearch has a default
100MB payload limit and that using meiliIndex.addDocumentsInBatches(records,
BATCH_SIZE) with BATCH_SIZE = 100000 may exceed that limit for large documents;
advise readers to calculate/estimate their average document size and reduce
BATCH_SIZE accordingly (or point them to the payload limit configuration link)
so uploads don’t fail.
learn/relevancy/synonyms.mdx (1)

15-15: Split this sentence for readability.

Line 15 packs result counts, causes, and examples into one dense sentence. Breaking it up and replacing “take into account” with something shorter makes the explanation easier to scan.

Suggested change
-With the new settings, searching for `great` returns 595 results and `fantastic` returns 423 results. This is due to various factors like [typos](/learn/relevancy/typo_tolerance_settings#minwordsizefortypos) and [splitting the query](/resources/internals/concat#split-queries) to find relevant documents. The search for `great` will allow only one typo (for example, `create`) and take into account all variations of `great` (for instance, `greatest`) along with `fantastic`.
+With the new settings, searching for `great` returns 595 results, and `fantastic` returns 423 results. This is due to factors such as [typos](/learn/relevancy/typo_tolerance_settings#minwordsizefortypos) and [splitting the query](/resources/internals/concat#split-queries) to find relevant documents. The search for `great` allows only one typo, for example `create`, and considers variations of `great`, such as `greatest`, along with `fantastic`.

As per coding guidelines, "Prefer shorter sentences; if a sentence runs over approximately 40 words, consider splitting or simplifying" and "Prefer short, direct sentences and avoid jargon when a simpler term exists in documentation."

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

In `@learn/relevancy/synonyms.mdx` at line 15, Split the long sentence that starts
"With the new settings, searching for `great` returns 595 results and
`fantastic` returns 423 results." into two shorter sentences: first state the
result counts and then explain the reasons (typos, query splitting) and
examples; also replace the phrase "take into account" with a shorter term like
"include" or "consider" (e.g., "it will allow only one typo and include
variations such as `greatest` and synonyms like `fantastic`"). Use the existing
phrasing referencing searches for `great` and `fantastic` to locate and update
the sentence in synonyms.mdx.
guides/ruby_on_rails_quick_start.mdx (1)

12-12: Use a site-relative docs link here.

This points to another page in the docs, so the full www.meilisearch.com/docs URL will bypass preview and versioned builds. A root-relative path keeps the link portable across environments.

Suggested change
-If you prefer to use the self-hosted version of Meilisearch, you can follow the [quick start](https://www.meilisearch.com/docs/resources/self_hosting/getting_started) tutorial.
+If you prefer to use the self-hosted version of Meilisearch, you can follow the [quick start](/resources/self_hosting/getting_started) tutorial.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@guides/ruby_on_rails_quick_start.mdx` at line 12, Replace the absolute
meilisearch docs URL in the sentence (the link text
"https://www.meilisearch.com/docs/resources/self_hosting/getting_started") with
a root-relative docs path so the link remains portable across preview and
versioned builds; update the link target to start with "/docs/..." (matching
your docs structure) while keeping the same anchor text so the self-hosted quick
start still points to the same internal docs page.
resources/help/sdks.mdx (1)

9-9: Prefer a fragment-only link for this in-page jump.

Since this points to a heading in the same document, #contributing is enough and avoids another pathname update if this page moves again.

Suggested change
-New integrations are constantly in development. If you'd like to contribute, [see below](/resources/help/sdks#contributing).
+New integrations are constantly in development. If you'd like to contribute, [see below](`#contributing`).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/help/sdks.mdx` at line 9, Replace the absolute in-page link
"/resources/help/sdks#contributing" with the fragment-only anchor
"#contributing" in the sentence "If you'd like to contribute, [see
below](/resources/help/sdks#contributing)." so the Markdown link target becomes
"#contributing" (keep the link text "see below" unchanged).
learn/filtering_and_sorting/filter_search_results.mdx (1)

60-60: Link directly to the relevant section.

This sentence is about nested fields on objects, so landing readers on the Objects section would be easier than sending them to the top of the page.

Suggested fix
-Use dot notation to filter results based on a document's [nested fields](/resources/internals/datatypes). The following query only returns thrillers with good user reviews:
+Use dot notation to filter results based on a document's [nested fields](/resources/internals/datatypes#objects). The following query only returns thrillers with good user reviews:

As per coding guidelines, "When adding or moving content, update or add links from related pages so users can find it."

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

In `@learn/filtering_and_sorting/filter_search_results.mdx` at line 60, The
"nested fields" link currently points to /resources/internals/datatypes (top of
page) but should link directly to the Objects section to land readers on the
relevant subsection; update the anchor in the "nested fields" link (the link
whose text is "nested fields") to point to the Objects section anchor (e.g.,
/resources/internals/datatypes#objects or the correct section id used in that
page) so the sentence about using dot notation takes users directly to the
Objects documentation.
resources/help/experimental_features_overview.mdx (1)

48-68: Consider adding specific anchors for better navigation.

Several experimental feature links point to the generic /resources/self_hosting/configuration page without specific anchors. Based on the context snippets, specific anchor sections exist in the configuration file.

For example:

  • Line 53 (Search queue size): Could use #search-queue-size
  • Line 54 (Drop search after): Could use #drop-search-after
  • Line 55 (Searches per core): Could use #searches-per-core

Lines 63-65 correctly use specific anchors. Consider updating lines 48, 51-55, 67, and 68 with their corresponding anchors for a better user experience.

🔗 Suggested anchor additions
-| [Limit task batch size](/resources/self_hosting/configuration)                     | Limits number of tasks processed in a single batch                         | CLI flag or environment variable            |
+| [Limit task batch size](/resources/self_hosting/configuration#maximum-number-of-batched-tasks) | Limits number of tasks processed in a single batch                         | CLI flag or environment variable            |
...
-| [Search queue size](/resources/self_hosting/configuration)                         | Configure maximum number of concurrent search requests                     | CLI flag or environment variable            |
+| [Search queue size](/resources/self_hosting/configuration#search-queue-size)       | Configure maximum number of concurrent search requests                     | CLI flag or environment variable            |
-| [Drop search after](/resources/self_hosting/configuration)                         | Drop irrelevant search requests after a configurable timeout (default: 60s) | CLI flag or environment variable           |
+| [Drop search after](/resources/self_hosting/configuration#drop-search-after)       | Drop irrelevant search requests after a configurable timeout (default: 60s) | CLI flag or environment variable           |
-| [Searches per core](/resources/self_hosting/configuration)                         | Configure number of concurrent search requests per CPU core (default: 4)   | CLI flag or environment variable            |
+| [Searches per core](/resources/self_hosting/configuration#searches-per-core)       | Configure number of concurrent search requests per CPU core (default: 4)   | CLI flag or environment variable            |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/help/experimental_features_overview.mdx` around lines 48 - 68,
Update the generic configuration links to point to their specific anchors:
change the link targets for "Search queue size" to include `#search-queue-size`,
"Drop search after" to `#drop-search-after`, "Searches per core" to
`#searches-per-core`, plus update the links for "Limit task batch size", "Reduce
indexing memory usage", "Replication parameters", and "Maximum batch payload
size" (lines referenced by their link texts in the diff) to the corresponding
anchors in the configuration doc so each markdown link targets the precise
section rather than the top-level /resources/self_hosting/configuration page.
resources/self_hosting/configuration.mdx (1)

601-601: Minor: Consider adding a subject for grammatical completeness.

The sentence "Can also be toggled at runtime via the /experimental-features API route." lacks an explicit subject.

📝 Suggested fix
-Enables the `CONTAINS` filter operator at launch. Can also be toggled at runtime via the `/experimental-features` API route.
+Enables the `CONTAINS` filter operator at launch. This can also be toggled at runtime via the `/experimental-features` API route.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/self_hosting/configuration.mdx` at line 601, The sentence fragment
"Can also be toggled at runtime via the `/experimental-features` API route." is
missing a subject; update the sentence in the documentation near the `CONTAINS`
feature description so it reads with an explicit subject (for example: "The
`CONTAINS` filter operator can also be toggled at runtime via the
`/experimental-features` API route."). Ensure you reference `CONTAINS` and
`/experimental-features` in the revised sentence.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@learn/getting_started/documents.mdx`:
- Line 62: Update the "index a document" link in
learn/getting_started/documents.mdx so it points to the more detailed
primary-field documentation; replace the current href
/resources/self_hosting/getting_started#add-documents with
/learn/getting_started/primary_key#primary-field (or alternatively, expand the
target section to fully explain primary-field/primary-key/document-id behavior
and why missing/wrong keys error) so readers clicking "index a document" get the
comprehensive primary-field guidance.

In `@learn/indexing/optimize_indexing_performance.mdx`:
- Around line 115-116: The list item containing the link text "Impact of RAM and
multi-threading on indexing performance" should be a single inline bullet
without a line break or trailing double spaces; edit the markdown so the entire
link [Impact of RAM and multi-threading on indexing
performance](/resources/self_hosting/ram_multithreading_performance) is on one
line and remove the extra two spaces at the end, and ensure only single spaces
are used between words and after sentence-ending punctuation in that list entry.

In `@learn/security/tenant_tokens.mdx`:
- Line 31: Update the sentence in the "Tenant tokens" paragraph that currently
reads "Meilisearch does not store nor keeps track of generated tokens" to the
grammatically correct phrasing "Meilisearch does not store or keep track of
generated tokens" (replace "does not store nor keeps track" with "does not store
or keep track") to fix subject-verb agreement and conjunction usage.

In `@reference/errors/error_codes.mdx`:
- Line 31: Update the sentence "A document exceeds the [maximum limit of 65,535
fields]..." to use the correct value and terminology from the linked page:
change it to "A document exceeds the [maximum limit of 65,536 attributes]..." so
the numeric limit and noun ("attributes") match the Meilisearch limitations
page; ensure only that single phrase is edited (the bracketed link text) and the
link target remains unchanged.

In `@resources/help/faq.mdx`:
- Line 15: Replace the awkward phrase "help you integrate easily Meilisearch in
your project" with a clearer, more natural wording; update the sentence in
resources/help/faq.mdx (the line containing "We also provide a lot of tools,
including [SDKs](/resources/help/sdks), to help you integrate easily Meilisearch
in your project.") to something like "We also provide many tools, including
[SDKs](/resources/help/sdks), to help you easily integrate Meilisearch into your
project." Ensure punctuation and spacing remain consistent with surrounding
text.

In `@resources/self_hosting/data_backup/snapshots.mdx`:
- Line 25: Update the --schedule-snapshot option description to state that
Meilisearch creates the first scheduled snapshot only after the configured
interval elapses (not immediately), mirroring the behavior documented in
snapshots.mdx; mention that the first snapshot will appear in the snapshots
directory and subsequent snapshots are created at the configured cadence (e.g.,
every 24 hours) to avoid the current mismatch between the two docs.

In `@resources/self_hosting/supported_os.mdx`:
- Line 7: Update the product name casing in the sentence "Meilisearch officially
supports Windows, MacOS, and many Linux distributions." by changing "MacOS" to
the official spelling "macOS" so the line reads "Meilisearch officially supports
Windows, macOS, and many Linux distributions."; ensure only the casing is
changed and no other text is modified.

---

Outside diff comments:
In `@resources/self_hosting/install_meilisearch_locally.mdx`:
- Around line 50-61: The documentation claims "latest stable release" but pins
the Docker image to getmeili/meilisearch:v1.37; update the image tag to the
current stable (getmeili/meilisearch:v1.38.2) and change the text to either
remove the "latest stable release" phrase or explicitly state the documented
version (v1.38.2) so the docs and the docker pull/run lines (the
getmeili/meilisearch:v1.37 strings) stay consistent; ensure the run and pull
commands both use the same updated tag.

---

Nitpick comments:
In `@guides/ruby_on_rails_quick_start.mdx`:
- Line 12: Replace the absolute meilisearch docs URL in the sentence (the link
text "https://www.meilisearch.com/docs/resources/self_hosting/getting_started")
with a root-relative docs path so the link remains portable across preview and
versioned builds; update the link target to start with "/docs/..." (matching
your docs structure) while keeping the same anchor text so the self-hosted quick
start still points to the same internal docs page.

In `@learn/filtering_and_sorting/filter_search_results.mdx`:
- Line 60: The "nested fields" link currently points to
/resources/internals/datatypes (top of page) but should link directly to the
Objects section to land readers on the relevant subsection; update the anchor in
the "nested fields" link (the link whose text is "nested fields") to point to
the Objects section anchor (e.g., /resources/internals/datatypes#objects or the
correct section id used in that page) so the sentence about using dot notation
takes users directly to the Objects documentation.

In `@learn/relevancy/synonyms.mdx`:
- Line 15: Split the long sentence that starts "With the new settings, searching
for `great` returns 595 results and `fantastic` returns 423 results." into two
shorter sentences: first state the result counts and then explain the reasons
(typos, query splitting) and examples; also replace the phrase "take into
account" with a shorter term like "include" or "consider" (e.g., "it will allow
only one typo and include variations such as `greatest` and synonyms like
`fantastic`"). Use the existing phrasing referencing searches for `great` and
`fantastic` to locate and update the sentence in synonyms.mdx.

In `@resources/help/experimental_features_overview.mdx`:
- Around line 48-68: Update the generic configuration links to point to their
specific anchors: change the link targets for "Search queue size" to include
`#search-queue-size`, "Drop search after" to `#drop-search-after`, "Searches per
core" to `#searches-per-core`, plus update the links for "Limit task batch size",
"Reduce indexing memory usage", "Replication parameters", and "Maximum batch
payload size" (lines referenced by their link texts in the diff) to the
corresponding anchors in the configuration doc so each markdown link targets the
precise section rather than the top-level /resources/self_hosting/configuration
page.

In `@resources/help/sdks.mdx`:
- Line 9: Replace the absolute in-page link "/resources/help/sdks#contributing"
with the fragment-only anchor "#contributing" in the sentence "If you'd like to
contribute, [see below](/resources/help/sdks#contributing)." so the Markdown
link target becomes "#contributing" (keep the link text "see below" unchanged).

In `@resources/migration/algolia_migration.mdx`:
- Around line 120-125: Add a short note near the BATCH_SIZE example warning that
Meilisearch has a default 100MB payload limit and that using
meiliIndex.addDocumentsInBatches(records, BATCH_SIZE) with BATCH_SIZE = 100000
may exceed that limit for large documents; advise readers to calculate/estimate
their average document size and reduce BATCH_SIZE accordingly (or point them to
the payload limit configuration link) so uploads don’t fail.

In `@resources/self_hosting/configuration.mdx`:
- Line 601: The sentence fragment "Can also be toggled at runtime via the
`/experimental-features` API route." is missing a subject; update the sentence
in the documentation near the `CONTAINS` feature description so it reads with an
explicit subject (for example: "The `CONTAINS` filter operator can also be
toggled at runtime via the `/experimental-features` API route."). Ensure you
reference `CONTAINS` and `/experimental-features` in the revised sentence.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8504252b-8009-4c28-9f79-991d354f3d68

📥 Commits

Reviewing files that changed from the base of the PR and between d4eb78a and d97db12.

📒 Files selected for processing (49)
  • docs.json
  • guides/docker.mdx
  • guides/front_end/front_end_integration.mdx
  • guides/laravel_multitenancy.mdx
  • guides/multitenancy_nodejs.mdx
  • guides/ruby_on_rails_quick_start.mdx
  • guides/strapi_v4.mdx
  • guides/vercel.mdx
  • home.mdx
  • learn/filtering_and_sorting/filter_search_results.mdx
  • learn/getting_started/cloud_quick_start.mdx
  • learn/getting_started/documents.mdx
  • learn/getting_started/what_is_meilisearch.mdx
  • learn/indexing/indexing_best_practices.mdx
  • learn/indexing/optimize_indexing_performance.mdx
  • learn/personalization/search_personalization.mdx
  • learn/relevancy/synonyms.mdx
  • learn/relevancy/typo_tolerance_settings.mdx
  • learn/security/tenant_tokens.mdx
  • reference/api/authorization.mdx
  • reference/errors/error_codes.mdx
  • resources/help/comparison_to_alternatives.mdx
  • resources/help/contributing_docs.mdx
  • resources/help/experimental_features_overview.mdx
  • resources/help/faq.mdx
  • resources/help/known_limitations.mdx
  • resources/help/language.mdx
  • resources/help/sdks.mdx
  • resources/help/telemetry.mdx
  • resources/help/versioning.mdx
  • resources/internals/concat.mdx
  • resources/internals/datatypes.mdx
  • resources/internals/prefix.mdx
  • resources/internals/storage.mdx
  • resources/migration/algolia_migration.mdx
  • resources/migration/migrating_cloud.mdx
  • resources/migration/updating.mdx
  • resources/self_hosting/configuration.mdx
  • resources/self_hosting/data_backup/dumps.mdx
  • resources/self_hosting/data_backup/snapshots.mdx
  • resources/self_hosting/data_backup/snapshots_vs_dumps.mdx
  • resources/self_hosting/enterprise_edition.mdx
  • resources/self_hosting/getting_started.mdx
  • resources/self_hosting/http2_ssl.mdx
  • resources/self_hosting/huggingface_gpu.mdx
  • resources/self_hosting/install_meilisearch_locally.mdx
  • resources/self_hosting/ram_multithreading_performance.mdx
  • resources/self_hosting/supported_os.mdx
  • resources/self_hosting/webhooks.mdx

Copy link

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

Caution

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

⚠️ Outside diff range comments (5)
docs.json (5)

935-938: ⚠️ Potential issue | 🟡 Minor

Redirect chain detected.

This redirect points to /learn/security/master_api_keys, which itself redirects to /learn/security/basic_security (line 1317). This creates a redirect chain that degrades user experience and SEO.

Update the destination to point directly to the final target.

🔧 Proposed fix
     {
       "source": "/reference/features/authentication",
-      "destination": "/learn/security/master_api_keys"
+      "destination": "/learn/security/basic_security"
     },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 935 - 938, This redirect entry with source
"/reference/features/authentication" currently points to
"/learn/security/master_api_keys", creating a redirect chain because
"/learn/security/master_api_keys" itself redirects to
"/learn/security/basic_security"; update the destination field for the entry
that has source "/reference/features/authentication" to point directly to the
final target "/learn/security/basic_security" to eliminate the chain.

999-1002: ⚠️ Potential issue | 🟡 Minor

Typo in redirect destination path.

The destination path includes an erroneous docs/ prefix. All other redirects in this file use paths starting with /. This will likely cause a broken redirect.

🔧 Proposed fix
     {
       "source": "/learn/advanced/filtering",
-      "destination": "docs/learn/filtering_and_sorting/filter_search_results"
+      "destination": "/learn/filtering_and_sorting/filter_search_results"
     },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 999 - 1002, The redirect entry with "source":
"/learn/advanced/filtering" has an incorrect "destination" value prefixed with
"docs/"; update the "destination" string in that object (the key named
destination) to start with a leading slash like
"/learn/filtering_and_sorting/filter_search_results" to match other redirects
and avoid a broken path.

1351-1354: ⚠️ Potential issue | 🟡 Minor

Redirect chain detected.

This redirect points to /learn/what_is_meilisearch/comparison_to_alternatives, which itself redirects to /resources/help/comparison_to_alternatives (lines 1327-1330). Update to point directly to the final destination.

🔧 Proposed fix
     {
       "source": "/learn/what_is_meilisearch/overview#alternatives",
-      "destination": "/learn/what_is_meilisearch/comparison_to_alternatives"
+      "destination": "/resources/help/comparison_to_alternatives"
     },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 1351 - 1354, The redirect entry with "source":
"/learn/what_is_meilisearch/overview#alternatives" currently points to an
intermediate "destination":
"/learn/what_is_meilisearch/comparison_to_alternatives" which creates a redirect
chain; update this entry so its "destination" is the final URL
"/resources/help/comparison_to_alternatives" (the same final target used by the
existing redirect at lines referencing
"/learn/what_is_meilisearch/comparison_to_alternatives") to eliminate the extra
hop and avoid the chain.

1107-1110: ⚠️ Potential issue | 🟡 Minor

Redirect chain with incorrect intermediate path.

This redirect points to /guides/deployment/gcp, which redirects to /guides/running_production (lines 1763-1766). However, there's now a dedicated GCP deployment page at resources/self_hosting/deployment/gcp (line 795).

🔧 Proposed fix
     {
       "source": "/learn/cookbooks/gcp",
-      "destination": "/guides/deployment/gcp"
+      "destination": "/resources/self_hosting/deployment/gcp"
     },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 1107 - 1110, The redirect entry with "source":
"/learn/cookbooks/gcp" currently points to "/guides/deployment/gcp" causing a
redirect chain; update its "destination" value to the canonical page
"resources/self_hosting/deployment/gcp" so the redirect goes directly to the
dedicated GCP deployment page and avoids the intermediate
"/guides/deployment/gcp" -> "/guides/running_production" chain.

1091-1098: ⚠️ Potential issue | 🟡 Minor

Redirects point to non-existent paths.

These redirects target /guides/deployment/aws and /guides/deployment/azure, but the Guides tab (lines 758-762) only contains guides/running_production. The actual deployment pages are now at resources/self_hosting/deployment/* (lines 793-798).

Update these redirects to point to the new Resources paths.

🔧 Proposed fix
     {
       "source": "/learn/cookbooks/aws",
-      "destination": "/guides/deployment/aws"
+      "destination": "/resources/self_hosting/deployment/aws"
     },
     {
       "source": "/learn/cookbooks/azure",
-      "destination": "/guides/deployment/azure"
+      "destination": "/resources/self_hosting/deployment/azure"
     },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 1091 - 1098, The redirects in docs.json map
"/learn/cookbooks/aws" and "/learn/cookbooks/azure" to non-existent destinations
"/guides/deployment/aws" and "/guides/deployment/azure"; update those
destination values to the current pages under resources/self_hosting/deployment
(e.g., change the destination for "/learn/cookbooks/aws" to
"/resources/self_hosting/deployment/aws" and for "/learn/cookbooks/azure" to
"/resources/self_hosting/deployment/azure") so the redirects point to the actual
deployment pages.
🧹 Nitpick comments (11)
resources/migration/previous_docs_version.mdx (3)

29-29: Minor grammar fix: "onto" instead of "into".

When referring to downloading files, "onto your local machine" is the standard phrasing.

✏️ Suggested fix
-To access previous versions of the Meilisearch documentation, the first step is downloading the documentation repository into your local machine. In Git, this is referred to as cloning.
+To access previous versions of the Meilisearch documentation, the first step is downloading the documentation repository onto your local machine. In Git, this is referred to as cloning.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/migration/previous_docs_version.mdx` at line 29, Update the
sentence that reads "downloading the documentation repository into your local
machine" in resources/migration/previous_docs_version.mdx (the line starting "To
access previous versions...") to use the correct preposition by replacing "into
your local machine" with "onto your local machine".

23-23: Consider clarifying Node version requirement.

Node v14 reached end-of-life in April 2023. If this specific version is required for compatibility with the old VuePress documentation (v0.17-v1.1), consider adding a brief note explaining why. Otherwise, users may have trouble installing or running a deprecated Node version. If newer Node versions work, update the recommendation.

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

In `@resources/migration/previous_docs_version.mdx` at line 23, Update the "[Node
v14](https://nodejs.org/en/)" entry: either change it to a supported Node LTS
version (e.g., "Node v18 LTS") if newer versions are compatible, or keep "Node
v14" but append a brief explanatory note that v14 is EOL and is only required
for legacy VuePress v0.17–v1.1 compatibility, including a short reason and any
workaround (e.g., using nvm to install v14) so readers know why the deprecated
version is listed.

59-101: Consider consistent version range formatting in headings.

The section headings use different formats for version ranges:

  • Line 59: >= v1.2
  • Line 65: v0.17-v1.1 (dash, no spaces)
  • Line 89: v0.11-v0.16 (dash, no spaces)
  • Line 101: v0.8 to v0.10 (word "to")

Additionally, the warning on line 86 uses spaced dash: "v0.17 - v1.1".

Consider using a consistent format across all version ranges for readability.

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

In `@resources/migration/previous_docs_version.mdx` around lines 59 - 101,
Normalize version-range formatting across headings and the warning: change ">=
v1.2: read `.mdx` files" to a consistent phrase like "v1.2 and later: read
`.mdx` files" and make all other ranges use the same delimiter style (e.g.,
"v0.17 - v1.1", "v0.11 - v0.16", "v0.8 - v0.10"); update the Warning text that
currently says "v0.17 - v1.1" to match the chosen style and ensure all section
headings ("v0.17-v1.1: run a local Vuepress server", "v0.11-v0.16: run a simple
Python server", "v0.8 to v0.10: read markdown source files") use that same
format for consistency.
resources/demos/saas.mdx (1)

41-52: Keep the sample request aligned with the page text.

The intro and table describe search across contacts, companies, deals, and activities, but this example only queries three indexes. Either add the activities query, or call out that the snippet is abbreviated.

✏️ Proposed doc fix
   "queries": [
     { "indexUid": "contacts", "q": "acme" },
     { "indexUid": "companies", "q": "acme" },
-    { "indexUid": "deals", "q": "acme" }
+    { "indexUid": "deals", "q": "acme" },
+    { "indexUid": "activities", "q": "acme" }
   ]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/demos/saas.mdx` around lines 41 - 52, The example multi-search JSON
is missing the "activities" query referenced in the intro/table; update the
sample in the Multi-search request example so the "queries" array includes an
entry for { "indexUid": "activities", "q": "acme" } to match the page text (or
explicitly annotate the snippet as abbreviated), ensuring the requests shown in
the examples align with the described indexes (contacts, companies, deals,
activities).
resources/comparisons/typesense.mdx (1)

26-26: Avoid roadmap language in comparison copy.

is adding field boosting support will age into stale or false copy as soon as the roadmap changes or the feature ships. Describe current behavior only, or link to a tracked issue or release note if you need to mention upcoming work.

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

In `@resources/comparisons/typesense.mdx` at line 26, Replace the roadmap phrasing
"is adding field boosting support" in resources/comparisons/typesense.mdx with a
statement of current behavior or a link to a tracked issue/release note;
specifically update the sentence that contrasts Typesense field boosting with
Meilisearch (the line referencing field boosting) to either describe
Meilisearch's present capabilities (e.g., it uses searchable attributes ordering
and does not yet support field boosting) or append a link to an official
issue/release note that tracks the planned feature so the copy remains accurate
over time.
resources/comparisons/mongodb.mdx (1)

7-7: Use aggregation pipeline in the intro.

Query API syntax is broader than the feature you describe later in Lines 27-29. Naming the aggregation pipeline up front would make the opening more precise.

✏️ Proposed doc fix
-MongoDB Atlas Search integrates Apache Lucene-based full-text search directly into MongoDB Atlas. It allows searching MongoDB collections without a separate search infrastructure, using familiar MongoDB Query API syntax.
+MongoDB Atlas Search integrates Apache Lucene-based full-text search directly into MongoDB Atlas. It allows searching MongoDB collections without a separate search infrastructure, using the familiar MongoDB aggregation pipeline.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/comparisons/mongodb.mdx` at line 7, Update the opening sentence
"MongoDB Atlas Search integrates Apache Lucene-based full-text search directly
into MongoDB Atlas. It allows searching MongoDB collections without a separate
search infrastructure, using familiar MongoDB Query API syntax." to explicitly
mention the aggregation pipeline instead of the broader "Query API syntax" —
e.g., replace "using familiar MongoDB Query API syntax" with "via the MongoDB
aggregation pipeline" and ensure the intro wording aligns with the later
description that references the aggregation pipeline.
resources/self_hosting/deployment/digitalocean.mdx (1)

94-94: Link to the moved self-hosting page directly.

This new Resources page still points to the legacy self-hosting URL. Please switch it to the canonical Resources path so readers do not bounce through a redirect from a brand-new page. As per coding guidelines, "When adding or moving content, update or add links from related pages so users can find it."

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

In `@resources/self_hosting/deployment/digitalocean.mdx` at line 94, Replace the
legacy link in the sentence "Remember to choose a [safe master
key](/learn/security/basic_security#creating-the-master-key-in-a-self-hosted-instance)..."
with the canonical Resources URL for the moved self-hosting page (update the
target after the [safe master key] link to the new /resources/self-hosting/...
path and preserve the same fragment
`#creating-the-master-key-in-a-self-hosted-instance`); change the href only, keep
the link text unchanged and apply the same replacement wherever that legacy URL
appears.
resources/demos/voice_search.mdx (1)

64-75: Consider adding standard API fallback for broader browser compatibility.

The code uses the vendor-prefixed webkitSpeechRecognition which only works in Chrome/Edge. For a more complete example that aligns with the browser support matrix listed above (including Firefox partial support), consider showing the standard API with fallback.

Suggested improvement
-const recognition = new webkitSpeechRecognition();
+const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
+const recognition = new SpeechRecognition();
 recognition.continuous = true;
 recognition.interimResults = true;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/demos/voice_search.mdx` around lines 64 - 75, Replace the
hard-coded vendor API with a standard API fallback: detect SpeechRecognition via
window.SpeechRecognition || window.webkitSpeechRecognition, guard if null, then
instantiate (e.g., const Recognition = window.SpeechRecognition ||
window.webkitSpeechRecognition; const recognition = new Recognition();), keep
the existing property assignments (continuous, interimResults), onresult handler
that calls searchMeilisearch(transcript), and only call recognition.start() when
the API exists to ensure broader browser compatibility.
resources/comparisons/alternatives.mdx (1)

260-260: Consider hyphenating compound adjectives.

"Open source" and "closed source" function as compound adjectives modifying "search engines" and are typically hyphenated in this usage.

Suggested change
-Since Lucene is the technology behind many open source or closed source search engines, it is considered as the reference search library.
+Since Lucene is the technology behind many open-source or closed-source search engines, it is considered the reference search library.

Note: Also removed "as" after "considered" for conciseness.

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

In `@resources/comparisons/alternatives.mdx` at line 260, Update the sentence
"Since Lucene is the technology behind many open source or closed source search
engines, it is considered as the reference search library." by hyphenating the
compound adjectives and removing the extraneous "as": change "open source" to
"open-source", "closed source" to "closed-source", and remove "as" after
"considered" so the phrase reads "...it is considered the reference search
library." Use this exact wording change where the sentence appears in the
alternatives.mdx content.
docs.json (2)

83-85: Footer link uses redirected path.

The Comparisons link in the footer points to /learn/what_is_meilisearch/comparison_to_alternatives, which now redirects to /resources/help/comparison_to_alternatives. Consider updating to the canonical path, or to the new Comparisons section overview at /resources/comparisons/alternatives.

🔧 Proposed fix
           {
             "label": "Comparisons",
-            "href": "https://www.meilisearch.com/docs/learn/what_is_meilisearch/comparison_to_alternatives"
+            "href": "https://www.meilisearch.com/docs/resources/comparisons/alternatives"
           },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 83 - 85, The footer entry with "label": "Comparisons"
currently has an outdated "href" value pointing to
/learn/what_is_meilisearch/comparison_to_alternatives; update that object's
"href" to the canonical path (either /resources/help/comparison_to_alternatives)
or the new overview (/resources/comparisons/alternatives) so the footer points
to the non-redirecting URL; locate the JSON object with "label": "Comparisons"
and replace its "href" string accordingly.

861-872: Consider clarifying the distinction between comparison pages.

The navigation includes both resources/comparisons/alternatives (line 863) in the Comparisons group and resources/help/comparison_to_alternatives (line 892) in the Help group. If these serve different purposes (e.g., overview vs. detailed comparisons), consider renaming one for clarity. If they're redundant, consolidate them.

Also applies to: 892-892

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

In `@docs.json` around lines 861 - 872, The navigation lists two potentially
overlapping pages: "resources/comparisons/alternatives" and
"resources/help/comparison_to_alternatives"; decide whether they are distinct
(overview vs. deep-dive) or redundant, then either rename one to make purpose
explicit (e.g., "resources/comparisons/alternatives_overview" or
"resources/help/alternatives_deep_dive") and update all nav entries that
reference those slugs, or consolidate by removing one entry and merging content
into the remaining page; update the "Comparisons" and "Help" group arrays in
docs.json and any internal links/redirects to use the chosen canonical slug so
navigation and content remain consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@resources/comparisons/alternatives.mdx`:
- Line 84: The Rails table row contains a trailing double pipe ("|
[Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶 <br />WIP
| ✅ ||") which creates an empty cell; edit that row to remove the extra pipe so
it ends with a single pipe (or no trailing pipe) to restore the correct number
of columns.

In `@resources/comparisons/elasticsearch.mdx`:
- Around line 17-18: The table rows for "**Pricing**" and "**Open source**"
contain hard-coded commercial details that will drift and compress complex
licensing into a short cell; update the "**Pricing**" row to use qualitative
wording (e.g., "self‑hosted: free OSS; hosted: paid tiers/vary by provider — see
vendor pricing") or add an explicit edition/date and citation, and change the
"**Open source**" row to describe the licensing difference qualitatively (e.g.,
"Permissive MIT for core vs. source-availability/AGPL-like restrictions for
hosted features — see license notes") so the table remains accurate without
fixed price points or oversimplified license text.
- Around line 57-59: The statement "Your dataset is under 500 million documents"
should be qualified: change the copy around that heading/text to present the 500
million number as a workload-dependent guideline rather than a hard cutoff by
either rephrasing to say "For many typical workloads (e.g., small documents,
simple ranking and filters, commodity server hardware), Meilisearch can handle
up to ~500 million documents on a single server" or by adding an explicit
assumptions sentence listing factors that affect the threshold (document size,
indexing complexity, ranking rules, filter cardinality, and hardware specs) and
recommending benchmarking for heavier workloads; update the paragraph under the
same heading to reflect this conditional/assumptive language.

In `@resources/comparisons/typesense.mdx`:
- Line 18: The "**Built-in analytics**" table row mixes a managed offering with
core engine features (shows "Yes (Cloud)" for one side but treats the other as
core), so either make the row compare managed tiers on both sides or restrict it
to core engine capabilities; update the "**Built-in analytics**" row in
resources/comparisons/typesense.mdx to one of two fixes: (A) mark both columns
as managed offerings (e.g., "Yes (Cloud)" vs "Yes (Cloud) / Basic query
popularity") and clarify in the header that this row compares managed tiers, or
(B) scope to core engine features by removing the "Cloud" parenthetical and
setting both columns to reflect on-prem/core capabilities (e.g., "No" or "Basic
query popularity" consistently) so the comparison is between the same product
tier.

In `@resources/demos/ecommerce.mdx`:
- Line 37: Replace the confusing `_geoRadius` analogy in the table row that
currently reads "Numeric range with `_geoRadius` equivalent for prices" with a
concise description such as "Numeric range filtering"; update the cell text to
remove `_geoRadius` and any geosearch analogy so it simply states "Numeric range
filtering" (locate the table row containing the literal `_geoRadius` token to
edit).

In `@resources/demos/overview.mdx`:
- Line 104: Replace the definitive sentence "All demo source code is available
in the [meilisearch/demos](https://github.com/meilisearch/demos) repository."
with a neutral statement that demo source is hosted on GitHub and that some
demos live in the meilisearch/demos repository while others have dedicated
repositories; keep the existing link to meilisearch/demos but add a short clause
like "and some demos are maintained in separate, dedicated repos" to avoid
implying all demos are in one place and ensure consistency with the links in
saas.mdx, ecommerce.mdx, and where_to_watch.mdx.

In `@resources/internals/bucket_sort.mdx`:
- Around line 67-79: The curl example uses the wrong HTTP verb: change the
request method from PATCH to PUT when calling the
/indexes/movies/settings/ranking-rules endpoint in the example curl command (the
line starting with curl -X PATCH
"${MEILISEARCH_URL}/indexes/movies/settings/ranking-rules"); update it to use
PUT so the ranking-rules update succeeds with the Meilisearch API while keeping
the same headers and JSON payload.
- Around line 52-61: Update the "Default ranking rules" list and the cURL
example payload to reflect Meilisearch v1.36.0+ built-in ranking rules: replace
the legacy "attribute" entry with two rules "attributeRank" and "wordPosition"
and ensure the order is exactly: words, typo, proximity, attributeRank, sort,
wordPosition, exactness; update both the bulleted list under the "Default
ranking rules" heading and the JSON/rankRules array in the curl example
accordingly so both locations match the new seven-rule sequence.
- Around line 26-34: Update the Step 2 description and table so the `typo` rule
is applied to the 1-word bucket (Bucket 4) containing "Badman" rather than
Bucket 1; specifically, change the narrative "If a bucket contains multiple
documents, the next rule (`typo`) breaks ties" to indicate that the `typo` split
is used only where a bucket has multiple candidates (e.g., the 1-word bucket),
and adjust the table rows so Bucket 4 (1-word) shows the 0-typo "Batman" and the
1-typo "Badman -> Batman" entries instead of placing the `typo` split under
Bucket 1. Ensure references like "Bucket 1" and "typo" in the surrounding text
are updated to reflect the correct bucket numbering and example.

In `@resources/migration/previous_docs_version.mdx`:
- Line 99: Summary: There's an extra double space before the word "work" in the
sentence containing `npx serve`. Fix: locate the sentence fragment that reads
"The above example uses Python to launch a local server, but alternatives such
as `npx serve`  work equally well." and remove the extra space between the
backticked `npx serve` and "work" so it reads "...`npx serve` work equally
well." Ensure only a single space remains.

In `@resources/self_hosting/deployment/azure.mdx`:
- Around line 95-112: The heredoc using "sudo cat << EOF >
/etc/systemd/system/meilisearch.service" will fail due to shell redirection
happening before sudo; replace that pattern with a command that writes the
heredoc as root (e.g., using sudo tee) so the file
/etc/systemd/system/meilisearch.service is created with the intended contents
(the [Unit]/[Service]/[Install] block including
ExecStart=/usr/local/bin/meilisearch --config-file-path /etc/meilisearch.toml,
WorkingDirectory=/var/lib/meilisearch, User=meilisearch, Group=meilisearch,
Restart=on-failure and WantedBy=multi-user.target) and ensure
permissions/ownership are correct after creation.
- Around line 156-168: The heredoc uses "sudo cat << EOF > ..." to write the
Nginx server block (the block that creates the meilisearch site file), which
fails because the redirection is performed by the non-root shell; replace that
heredoc line with a root-capable write approach such as piping into sudo tee or
running the heredoc under sudo shell (e.g., use "sudo tee meilisearch >
/dev/null << 'EOF'" or "sudo bash -c 'cat > meilisearch << EOF'") so the nginx
site file is written with root permissions and keep the rest of the server { ...
} block unchanged.

In `@resources/self_hosting/deployment/digitalocean.mdx`:
- Around line 127-134: Add a systemctl daemon-reload immediately after writing
the systemd unit (/etc/systemd/system/meilisearch.service) and before calling
systemctl enable meilisearch and systemctl start meilisearch so systemd sees the
new unit; update the section around the systemd commands to run systemctl
daemon-reload then systemctl enable meilisearch then systemctl start
meilisearch.
- Around line 184-193: The nginx server block currently uses a catch-all host
(server_name _) which prevents certbot --nginx from finding a domain-specific
block to update; edit the server block so the server_name directive (replace the
current "server_name _;") is set to your real hostname (e.g., yourdomain.com or
www.yourdomain.com) or a variable placeholder like YOUR_HOSTNAME, ensuring the
block that contains proxy_pass http://localhost:7700; matches the actual domain
you will request a certificate for.

In `@resources/self_hosting/deployment/gcp.mdx`:
- Around line 95-112: The here-doc that writes the meilisearch systemd unit uses
shell redirection with sudo (sudo cat << EOF >
/etc/systemd/system/meilisearch.service) which fails because the redirection
runs without privileges; update the documentation block that creates
meilisearch.service so the file is written with elevated privileges (e.g. use
sudo tee to write to /etc/systemd/system/meilisearch.service or wrap the
redirection in sudo bash -c) and keep the unit contents and fields (Description,
After, Type, WorkingDirectory, ExecStart, User, Group, Restart, WantedBy)
unchanged.
- Around line 154-165: The here-document uses a redirection that won’t be
elevated by sudo (the line starting with sudo cat << EOF >
/etc/nginx/sites-enabled/meilisearch), so replace that approach with an
elevated-write method (e.g., use sudo tee or sudo sh -c to write
/etc/nginx/sites-enabled/meilisearch) and preserve the surrounding nginx server
block contents exactly (the server { listen 80 ... proxy_pass
http://localhost:7700; } block); also quote the EOF delimiter to avoid
unintended shell variable expansion if needed.

---

Outside diff comments:
In `@docs.json`:
- Around line 935-938: This redirect entry with source
"/reference/features/authentication" currently points to
"/learn/security/master_api_keys", creating a redirect chain because
"/learn/security/master_api_keys" itself redirects to
"/learn/security/basic_security"; update the destination field for the entry
that has source "/reference/features/authentication" to point directly to the
final target "/learn/security/basic_security" to eliminate the chain.
- Around line 999-1002: The redirect entry with "source":
"/learn/advanced/filtering" has an incorrect "destination" value prefixed with
"docs/"; update the "destination" string in that object (the key named
destination) to start with a leading slash like
"/learn/filtering_and_sorting/filter_search_results" to match other redirects
and avoid a broken path.
- Around line 1351-1354: The redirect entry with "source":
"/learn/what_is_meilisearch/overview#alternatives" currently points to an
intermediate "destination":
"/learn/what_is_meilisearch/comparison_to_alternatives" which creates a redirect
chain; update this entry so its "destination" is the final URL
"/resources/help/comparison_to_alternatives" (the same final target used by the
existing redirect at lines referencing
"/learn/what_is_meilisearch/comparison_to_alternatives") to eliminate the extra
hop and avoid the chain.
- Around line 1107-1110: The redirect entry with "source":
"/learn/cookbooks/gcp" currently points to "/guides/deployment/gcp" causing a
redirect chain; update its "destination" value to the canonical page
"resources/self_hosting/deployment/gcp" so the redirect goes directly to the
dedicated GCP deployment page and avoids the intermediate
"/guides/deployment/gcp" -> "/guides/running_production" chain.
- Around line 1091-1098: The redirects in docs.json map "/learn/cookbooks/aws"
and "/learn/cookbooks/azure" to non-existent destinations
"/guides/deployment/aws" and "/guides/deployment/azure"; update those
destination values to the current pages under resources/self_hosting/deployment
(e.g., change the destination for "/learn/cookbooks/aws" to
"/resources/self_hosting/deployment/aws" and for "/learn/cookbooks/azure" to
"/resources/self_hosting/deployment/azure") so the redirects point to the actual
deployment pages.

---

Nitpick comments:
In `@docs.json`:
- Around line 83-85: The footer entry with "label": "Comparisons" currently has
an outdated "href" value pointing to
/learn/what_is_meilisearch/comparison_to_alternatives; update that object's
"href" to the canonical path (either /resources/help/comparison_to_alternatives)
or the new overview (/resources/comparisons/alternatives) so the footer points
to the non-redirecting URL; locate the JSON object with "label": "Comparisons"
and replace its "href" string accordingly.
- Around line 861-872: The navigation lists two potentially overlapping pages:
"resources/comparisons/alternatives" and
"resources/help/comparison_to_alternatives"; decide whether they are distinct
(overview vs. deep-dive) or redundant, then either rename one to make purpose
explicit (e.g., "resources/comparisons/alternatives_overview" or
"resources/help/alternatives_deep_dive") and update all nav entries that
reference those slugs, or consolidate by removing one entry and merging content
into the remaining page; update the "Comparisons" and "Help" group arrays in
docs.json and any internal links/redirects to use the chosen canonical slug so
navigation and content remain consistent.

In `@resources/comparisons/alternatives.mdx`:
- Line 260: Update the sentence "Since Lucene is the technology behind many open
source or closed source search engines, it is considered as the reference search
library." by hyphenating the compound adjectives and removing the extraneous
"as": change "open source" to "open-source", "closed source" to "closed-source",
and remove "as" after "considered" so the phrase reads "...it is considered the
reference search library." Use this exact wording change where the sentence
appears in the alternatives.mdx content.

In `@resources/comparisons/mongodb.mdx`:
- Line 7: Update the opening sentence "MongoDB Atlas Search integrates Apache
Lucene-based full-text search directly into MongoDB Atlas. It allows searching
MongoDB collections without a separate search infrastructure, using familiar
MongoDB Query API syntax." to explicitly mention the aggregation pipeline
instead of the broader "Query API syntax" — e.g., replace "using familiar
MongoDB Query API syntax" with "via the MongoDB aggregation pipeline" and ensure
the intro wording aligns with the later description that references the
aggregation pipeline.

In `@resources/comparisons/typesense.mdx`:
- Line 26: Replace the roadmap phrasing "is adding field boosting support" in
resources/comparisons/typesense.mdx with a statement of current behavior or a
link to a tracked issue/release note; specifically update the sentence that
contrasts Typesense field boosting with Meilisearch (the line referencing field
boosting) to either describe Meilisearch's present capabilities (e.g., it uses
searchable attributes ordering and does not yet support field boosting) or
append a link to an official issue/release note that tracks the planned feature
so the copy remains accurate over time.

In `@resources/demos/saas.mdx`:
- Around line 41-52: The example multi-search JSON is missing the "activities"
query referenced in the intro/table; update the sample in the Multi-search
request example so the "queries" array includes an entry for { "indexUid":
"activities", "q": "acme" } to match the page text (or explicitly annotate the
snippet as abbreviated), ensuring the requests shown in the examples align with
the described indexes (contacts, companies, deals, activities).

In `@resources/demos/voice_search.mdx`:
- Around line 64-75: Replace the hard-coded vendor API with a standard API
fallback: detect SpeechRecognition via window.SpeechRecognition ||
window.webkitSpeechRecognition, guard if null, then instantiate (e.g., const
Recognition = window.SpeechRecognition || window.webkitSpeechRecognition; const
recognition = new Recognition();), keep the existing property assignments
(continuous, interimResults), onresult handler that calls
searchMeilisearch(transcript), and only call recognition.start() when the API
exists to ensure broader browser compatibility.

In `@resources/migration/previous_docs_version.mdx`:
- Line 29: Update the sentence that reads "downloading the documentation
repository into your local machine" in
resources/migration/previous_docs_version.mdx (the line starting "To access
previous versions...") to use the correct preposition by replacing "into your
local machine" with "onto your local machine".
- Line 23: Update the "[Node v14](https://nodejs.org/en/)" entry: either change
it to a supported Node LTS version (e.g., "Node v18 LTS") if newer versions are
compatible, or keep "Node v14" but append a brief explanatory note that v14 is
EOL and is only required for legacy VuePress v0.17–v1.1 compatibility, including
a short reason and any workaround (e.g., using nvm to install v14) so readers
know why the deprecated version is listed.
- Around line 59-101: Normalize version-range formatting across headings and the
warning: change ">= v1.2: read `.mdx` files" to a consistent phrase like "v1.2
and later: read `.mdx` files" and make all other ranges use the same delimiter
style (e.g., "v0.17 - v1.1", "v0.11 - v0.16", "v0.8 - v0.10"); update the
Warning text that currently says "v0.17 - v1.1" to match the chosen style and
ensure all section headings ("v0.17-v1.1: run a local Vuepress server",
"v0.11-v0.16: run a simple Python server", "v0.8 to v0.10: read markdown source
files") use that same format for consistency.

In `@resources/self_hosting/deployment/digitalocean.mdx`:
- Line 94: Replace the legacy link in the sentence "Remember to choose a [safe
master
key](/learn/security/basic_security#creating-the-master-key-in-a-self-hosted-instance)..."
with the canonical Resources URL for the moved self-hosting page (update the
target after the [safe master key] link to the new /resources/self-hosting/...
path and preserve the same fragment
`#creating-the-master-key-in-a-self-hosted-instance`); change the href only, keep
the link text unchanged and apply the same replacement wherever that legacy URL
appears.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 149a7e98-813a-4de9-84cd-38661acd35cf

📥 Commits

Reviewing files that changed from the base of the PR and between d97db12 and 2863241.

📒 Files selected for processing (34)
  • docs.json
  • learn/indexing/optimize_indexing_performance.mdx
  • resources/comparisons/algolia.mdx
  • resources/comparisons/alternatives.mdx
  • resources/comparisons/elasticsearch.mdx
  • resources/comparisons/mongodb.mdx
  • resources/comparisons/opensearch.mdx
  • resources/comparisons/pinecone.mdx
  • resources/comparisons/postgresql.mdx
  • resources/comparisons/qdrant.mdx
  • resources/comparisons/typesense.mdx
  • resources/demos/ecommerce.mdx
  • resources/demos/flickr.mdx
  • resources/demos/geosearch.mdx
  • resources/demos/moma.mdx
  • resources/demos/music.mdx
  • resources/demos/nobel_prizes.mdx
  • resources/demos/overview.mdx
  • resources/demos/rubygems.mdx
  • resources/demos/saas.mdx
  • resources/demos/tenant_tokens.mdx
  • resources/demos/typo_tolerance.mdx
  • resources/demos/voice_search.mdx
  • resources/demos/where_to_watch.mdx
  • resources/internals/bucket_sort.mdx
  • resources/internals/hannoy.mdx
  • resources/migration/previous_docs_version.mdx
  • resources/self_hosting/deployment/aws.mdx
  • resources/self_hosting/deployment/azure.mdx
  • resources/self_hosting/deployment/digitalocean.mdx
  • resources/self_hosting/deployment/gcp.mdx
  • resources/self_hosting/performance/ram_multithreading.mdx
  • resources/self_hosting/security/http2_ssl.mdx
  • resources/self_hosting/security/master_api_keys.mdx
✅ Files skipped from review due to trivial changes (13)
  • resources/self_hosting/performance/ram_multithreading.mdx
  • resources/self_hosting/deployment/aws.mdx
  • resources/demos/geosearch.mdx
  • resources/demos/typo_tolerance.mdx
  • resources/demos/nobel_prizes.mdx
  • resources/comparisons/qdrant.mdx
  • resources/demos/rubygems.mdx
  • resources/demos/music.mdx
  • resources/self_hosting/security/master_api_keys.mdx
  • resources/demos/moma.mdx
  • resources/demos/flickr.mdx
  • resources/demos/tenant_tokens.mdx
  • resources/internals/hannoy.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • learn/indexing/optimize_indexing_performance.mdx

Copy link

@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.

🧹 Nitpick comments (2)
resources/self_hosting/supported_os.mdx (1)

35-35: Consider tightening the final troubleshooting sentence.

Line 35 can be slightly more direct by replacing “is not compatible” with “is incompatible.”

✏️ Optional wording tweak
-If the provided [binaries](https://github.com/meilisearch/meilisearch/releases) do not work on your operating system, try building Meilisearch [from source](/resources/self_hosting/install_meilisearch_locally#local-installation). If compilation fails, Meilisearch is not compatible with your machine.
+If the provided [binaries](https://github.com/meilisearch/meilisearch/releases) do not work on your operating system, try building Meilisearch [from source](/resources/self_hosting/install_meilisearch_locally#local-installation). If compilation fails, Meilisearch is incompatible with your machine.

As per coding guidelines, "Prefer short, direct sentences and avoid jargon when a simpler term exists in documentation."

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

In `@resources/self_hosting/supported_os.mdx` at line 35, Replace the final
troubleshooting sentence in supported_os.mdx that currently reads “If
compilation fails, Meilisearch is not compatible with your machine.” with a
tighter, more direct version such as “If compilation fails, Meilisearch is
incompatible with your machine.” — update the exact sentence text in the file
(the line referencing binaries and building from source) so wording changes from
“is not compatible” to “is incompatible.”
resources/help/faq.mdx (1)

137-137: Split this sentence for readability and tone consistency.

The line is dense and harder to scan in FAQ format. Consider splitting it into two shorter sentences.

✂️ Suggested rewrite
-You can read more about what metrics we collect, why we collect them, and how to disable it on our [telemetry page](/resources/help/telemetry). Issues of transparency and privacy are very important to us, so if you feel we are lacking in this area please [open an issue](https://github.com/meilisearch/documentation/issues/new/choose) or send an email to our dedicated email address: [privacy@meilisearch.com](mailto:privacy@meilisearch.com).
+You can read more about what metrics we collect, why we collect them, and how to disable it on our [telemetry page](/resources/help/telemetry). Transparency and privacy are important to us.
+If you feel we are lacking in this area, please [open an issue](https://github.com/meilisearch/documentation/issues/new/choose) or email us at [privacy@meilisearch.com](mailto:privacy@meilisearch.com).

As per coding guidelines, "Prefer shorter sentences; if a sentence runs over approximately 40 words, consider splitting or simplifying" and "Prefer short, direct sentences and avoid jargon when a simpler term exists in documentation."

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

In `@resources/help/faq.mdx` at line 137, The long sentence describing telemetry
and contact options should be split into two shorter, clearer sentences: first
state that readers can learn which metrics are collected, why, and how to
disable them with a link to the telemetry page (keep the [telemetry
page](/resources/help/telemetry) link), and second state that transparency and
privacy are important and provide the two contact options (the GitHub issue link
and privacy@meilisearch.com) as a separate sentence; update the existing
sentence in the FAQ content (the telemetry/contacts line) to reflect this split
for improved readability and tone.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@resources/help/faq.mdx`:
- Line 137: The long sentence describing telemetry and contact options should be
split into two shorter, clearer sentences: first state that readers can learn
which metrics are collected, why, and how to disable them with a link to the
telemetry page (keep the [telemetry page](/resources/help/telemetry) link), and
second state that transparency and privacy are important and provide the two
contact options (the GitHub issue link and privacy@meilisearch.com) as a
separate sentence; update the existing sentence in the FAQ content (the
telemetry/contacts line) to reflect this split for improved readability and
tone.

In `@resources/self_hosting/supported_os.mdx`:
- Line 35: Replace the final troubleshooting sentence in supported_os.mdx that
currently reads “If compilation fails, Meilisearch is not compatible with your
machine.” with a tighter, more direct version such as “If compilation fails,
Meilisearch is incompatible with your machine.” — update the exact sentence text
in the file (the line referencing binaries and building from source) so wording
changes from “is not compatible” to “is incompatible.”

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e9310954-fc68-4fa1-93ef-1866fd97f85f

📥 Commits

Reviewing files that changed from the base of the PR and between 2863241 and 1e477b4.

📒 Files selected for processing (5)
  • learn/indexing/optimize_indexing_performance.mdx
  • learn/security/tenant_tokens.mdx
  • reference/errors/error_codes.mdx
  • resources/help/faq.mdx
  • resources/self_hosting/supported_os.mdx
🚧 Files skipped from review as they are similar to previous changes (2)
  • reference/errors/error_codes.mdx
  • learn/indexing/optimize_indexing_performance.mdx

Copy link

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

🧹 Nitpick comments (4)
resources/demos/ecommerce.mdx (1)

15-15: Prefer "for example" over "e.g." per coding guidelines.

✏️ Suggested fix
-- **Disjunctive facets**: Select multiple values within a category (e.g., multiple brands)
+- **Disjunctive facets**: Select multiple values within a category (for example, multiple brands)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/demos/ecommerce.mdx` at line 15, Replace the abbreviation "e.g."
with the phrase "for example" in the Disjunctive facets description—specifically
update the string "**Disjunctive facets**: Select multiple values within a
category (e.g., multiple brands)" to use "for example" instead of "e.g." so it
reads "(for example, multiple brands)"; ensure punctuation and spacing remain
correct around the replacement.
resources/comparisons/alternatives.mdx (2)

244-244: Tighten small style issues (spacing and compound adjectives)

There are a few copy-edit fixes: double space at Line 244, and hyphenation at Line 260 and Line 312.

Suggested fix
-... available via [Meilisearch Cloud](https://meilisearch.com/cloud?utm_campaign=oss&utm_source=docs&utm_medium=comparison) or  self-hosted.
+... available via [Meilisearch Cloud](https://meilisearch.com/cloud?utm_campaign=oss&utm_source=docs&utm_medium=comparison) or self-hosted.

-Since Lucene is the technology behind many open source or closed source search engines...
+Since Lucene is the technology behind many open-source or closed-source search engines...

-... a very large full text-based database.
+... a very large full-text-based database.

As per coding guidelines, use one space between words and one space after sentence-ending punctuation before the next sentence.

Also applies to: 260-260, 312-312

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

In `@resources/comparisons/alternatives.mdx` at line 244, Fix spacing and
hyphenation issues in the comparisons text: remove the double space between
"Cloud](https://meilisearch.com/cloud?utm_campaign=oss&utm_source=docs&utm_medium=comparison)
or  self-hosted" so there is a single space before "self-hosted", and enforce
correct compound adjective hyphenation where used elsewhere (search-usage and
Pro-tier or similar phrasing) so compound modifiers use hyphens consistently
(e.g., change "search usage" to "search-usage" only where it modifies a noun,
and "Pro tier" to "Pro-tier" if used as a modifier); update the sentences
containing "Meilisearch pricing" and the Pro tier sentence to use one space
after sentence-ending punctuation and correct hyphenation accordingly.

8-17: Use neutral voice to match docs tone

This page repeatedly uses first-person phrasing (we, our). Consider neutral phrasing for consistency with the rest of the docs.

Example rewrite (intro)
-In this article, we'll go over the differences between Meilisearch and other search engines:
+This article compares Meilisearch with other search engines:

-- In the [comparison table](`#comparison-table`), we present a general overview ...
+- The [comparison table](`#comparison-table`) provides a general overview ...

-- In the [approach comparison](`#approach-comparison`), instead, we focus on ...
+- The [approach comparison](`#approach-comparison`) section focuses on ...

As per coding guidelines, avoid first person pronouns in general documentation and prefer short, direct sentences.

Also applies to: 320-324

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

In `@resources/comparisons/alternatives.mdx` around lines 8 - 17, The intro and
related sections ("comparison table", "approach comparison", "a quick look at
the search engine landscape") use first-person phrasing ("we", "our"); rewrite
those sentences to a neutral, third-person or passive voice and shorten them for
clarity (e.g., "This article compares Meilisearch with other search engines"
instead of "we'll go over the differences"), remove occurrences of "we" and
"our" across the page (also noted around the later section referenced), and
ensure consistent neutral tone throughout the document.
resources/self_hosting/deployment/digitalocean.mdx (1)

94-94: Update this security link to the Resources path.

This page was added under resources/, but this link still targets /learn/....

As per coding guidelines: "When adding or moving content, update or add links from related pages so users can find it."

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

In `@resources/self_hosting/deployment/digitalocean.mdx` at line 94, Update the
hardcoded "/learn/..." link target in the sentence that currently contains
"/learn/security/basic_security#creating-the-master-key-in-a-self-hosted-instance"
so it points to the equivalent Resources path (e.g., the resources-level URL or
correct relative path under resources where the "basic_security" anchor now
lives); edit the Markdown link target in
resources/self_hosting/deployment/digitalocean.mdx to replace the old href with
the Resources path so the link resolves from the new file location.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@resources/comparisons/alternatives.mdx`:
- Line 12: Replace all occurrences of the incorrect product capitalization
"ElasticSearch" with the official "Elasticsearch" throughout the document,
including the inline link text in the sentence that references the approach
comparison and the section anchor/heading "meilisearch-vs-elasticsearch" so the
visible text and any link labels use the correct spelling.

In `@resources/self_hosting/configuration.mdx`:
- Line 601: Convert the fragment-style option descriptions into full descriptive
sentences for consistency: for the entry mentioning the CONTAINS filter
operator, replace the fragment with two sentences such as "Enables the CONTAINS
filter operator at launch. It can also be toggled at runtime via the
/experimental-features API route." Apply the same pattern to the other two
option descriptions that currently use imperative/fragments (the nearby entries
referencing experimental toggles) so all three match the surrounding
full-sentence style and simple wording.

In `@resources/self_hosting/deployment/digitalocean.mdx`:
- Line 213: The sentence "Use [certbot](https://certbot.eff.org/) to configure
enable HTTPS in your server." is ungrammatical; replace it with a short, direct
phrasing such as "Use certbot (https://certbot.eff.org/) to enable HTTPS on your
server." — locate the exact sentence token "Use
[certbot](https://certbot.eff.org/) to configure enable HTTPS in your server."
and update it to the corrected wording, preserving the existing certbot link and
punctuation.
- Around line 24-29: The guide mixes privilege styles (some commands like "apt
update" / "apt install curl -y" are shown without sudo while others use
"sudo")—add a single clear sentence after the "Prerequisites" header stating
whether the guide assumes root shell or a regular user requiring sudo (and which
prompt style you use, e.g., "#" for root or "$" for user), then make the
commands consistent: either remove "sudo" from the few commands that have it (so
all commands are root-style) or add "sudo" to all privileged commands (including
the instances currently using bare apt/ufw/systemctl) so every privileged action
follows the stated convention; ensure the sudo-consistent commands and the
prompt guidance are updated in the same sections that include package
installation (e.g., the "apt update"/"apt install curl -y" block) and the
currently sudo'd commands to keep copy-paste workflows unambiguous.

In `@resources/self_hosting/deployment/gcp.mdx`:
- Around line 155-160: The Nginx server block uses a catch-all "server_name _;"
which prevents certbot from matching the requested domain; update the server
block created by the heredoc (the block containing "server_name _;" and
"location / {") to use your real domain name(s) (e.g., "server_name example.com
www.example.com;") so certbot --nginx can find and modify the correct server
block during certificate issuance.
- Around line 117-119: After creating the new systemd unit file for Meilisearch,
run systemctl daemon-reload before enabling/starting the service so systemd
picks up the new unit; update the sequence around the unit-file creation to call
"systemctl daemon-reload" prior to "systemctl enable meilisearch" and "systemctl
start meilisearch" to ensure the unit is detected and commands succeed.

---

Nitpick comments:
In `@resources/comparisons/alternatives.mdx`:
- Line 244: Fix spacing and hyphenation issues in the comparisons text: remove
the double space between
"Cloud](https://meilisearch.com/cloud?utm_campaign=oss&utm_source=docs&utm_medium=comparison)
or  self-hosted" so there is a single space before "self-hosted", and enforce
correct compound adjective hyphenation where used elsewhere (search-usage and
Pro-tier or similar phrasing) so compound modifiers use hyphens consistently
(e.g., change "search usage" to "search-usage" only where it modifies a noun,
and "Pro tier" to "Pro-tier" if used as a modifier); update the sentences
containing "Meilisearch pricing" and the Pro tier sentence to use one space
after sentence-ending punctuation and correct hyphenation accordingly.
- Around line 8-17: The intro and related sections ("comparison table",
"approach comparison", "a quick look at the search engine landscape") use
first-person phrasing ("we", "our"); rewrite those sentences to a neutral,
third-person or passive voice and shorten them for clarity (e.g., "This article
compares Meilisearch with other search engines" instead of "we'll go over the
differences"), remove occurrences of "we" and "our" across the page (also noted
around the later section referenced), and ensure consistent neutral tone
throughout the document.

In `@resources/demos/ecommerce.mdx`:
- Line 15: Replace the abbreviation "e.g." with the phrase "for example" in the
Disjunctive facets description—specifically update the string "**Disjunctive
facets**: Select multiple values within a category (e.g., multiple brands)" to
use "for example" instead of "e.g." so it reads "(for example, multiple
brands)"; ensure punctuation and spacing remain correct around the replacement.

In `@resources/self_hosting/deployment/digitalocean.mdx`:
- Line 94: Update the hardcoded "/learn/..." link target in the sentence that
currently contains
"/learn/security/basic_security#creating-the-master-key-in-a-self-hosted-instance"
so it points to the equivalent Resources path (e.g., the resources-level URL or
correct relative path under resources where the "basic_security" anchor now
lives); edit the Markdown link target in
resources/self_hosting/deployment/digitalocean.mdx to replace the old href with
the Resources path so the link resolves from the new file location.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 31168403-2a4d-4b0d-a3d4-21ffd742c1e9

📥 Commits

Reviewing files that changed from the base of the PR and between 1e477b4 and ab9a6d0.

📒 Files selected for processing (12)
  • learn/getting_started/documents.mdx
  • resources/comparisons/alternatives.mdx
  • resources/comparisons/elasticsearch.mdx
  • resources/comparisons/typesense.mdx
  • resources/demos/ecommerce.mdx
  • resources/demos/overview.mdx
  • resources/internals/bucket_sort.mdx
  • resources/migration/previous_docs_version.mdx
  • resources/self_hosting/configuration.mdx
  • resources/self_hosting/deployment/azure.mdx
  • resources/self_hosting/deployment/digitalocean.mdx
  • resources/self_hosting/deployment/gcp.mdx
🚧 Files skipped from review as they are similar to previous changes (7)
  • resources/self_hosting/deployment/azure.mdx
  • resources/demos/overview.mdx
  • learn/getting_started/documents.mdx
  • resources/migration/previous_docs_version.mdx
  • resources/comparisons/typesense.mdx
  • resources/comparisons/elasticsearch.mdx
  • resources/internals/bucket_sort.mdx

Copy link

@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

Caution

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

⚠️ Outside diff range comments (2)
resources/help/comparison_to_alternatives.mdx (2)

53-53: ⚠️ Potential issue | 🟡 Minor

Extra pipe character creates malformed table cell.

The Rails row has a trailing || creating an unintended empty column.

Proposed fix
-| [Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶 <br />WIP | ✅ ||
+| [Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶 <br />WIP | ✅ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/help/comparison_to_alternatives.mdx` at line 53, The Rails table
row contains an extra trailing pipe "||" that creates an unintended empty
column; edit the row string (the Rails row: "|
[Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶 <br />WIP
| ✅ ||") to remove the extra pipe so it ends with a single "|" (i.e., remove the
final extra "|") ensuring the Markdown table columns align correctly.

1-6: ⚠️ Potential issue | 🟡 Minor

Two similar comparison files exist with largely duplicate content — consolidate or clarify purpose.

resources/comparisons/alternatives.mdx (324 lines) and resources/help/comparison_to_alternatives.mdx (291 lines) share nearly identical comparison tables and landscape analysis. The main structural difference is that alternatives.mdx includes a "Detailed comparisons" CardGroup section (lines 20–49) linking to dedicated guides, while comparison_to_alternatives.mdx omits it entirely.

Minor inconsistencies also exist:

  • Line 53 in comparison_to_alternatives.mdx: trailing pipe || in the Rails SDK row (formatting error)
  • Line 127: different monitoring dashboard URL path between files

If both files are intentional (serving different audiences or navigation structures), document why. Otherwise, consolidate them and redirect as needed.

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

In `@resources/help/comparison_to_alternatives.mdx` around lines 1 - 6, The two
near-duplicate docs (the one titled "Comparison to alternatives" and the other
"Alternatives") must be reconciled: either consolidate content into a single
canonical doc and add a redirect from the other, or keep both but add a short
explanatory note at the top describing their distinct purposes and audience.
While reconciling, ensure the "Detailed comparisons" CardGroup section present
in the "Alternatives" doc is intentionally included or explicitly omitted from
"Comparison to alternatives"; add it to the latter if you want the same
navigation. Fix the formatting and content inconsistencies: remove the trailing
pipe from the Rails SDK table row (the malformed "||") and standardize the
monitoring dashboard URL path so both docs point to the same path; update links
and link titles accordingly. Finally, add a brief comment in the chosen
canonical doc explaining why the other file still exists (or delete and add an
HTTP redirect) so future authors understand the intent.
♻️ Duplicate comments (3)
resources/comparisons/alternatives.mdx (2)

322-322: ⚠️ Potential issue | 🟡 Minor

Use official capitalization: Elasticsearch

Line 322 uses ElasticSearch instead of Elasticsearch.

Proposed fix
-Usually, when a developer is looking for a search tool to integrate into their application, they will go for ElasticSearch or less effective choices.
+Usually, when a developer is looking for a search tool to integrate into their application, they will go for Elasticsearch or less effective choices.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/comparisons/alternatives.mdx` at line 322, Replace the incorrect
capitalization "ElasticSearch" with the official "Elasticsearch" in the text
block that mentions search tools (the string "ElasticSearch" appears in the
sentence starting "Usually, when a developer is looking for a search tool...");
update that exact token to "Elasticsearch" so the product name uses the official
casing throughout the file resources/comparisons/alternatives.mdx.

12-12: ⚠️ Potential issue | 🟡 Minor

Use official capitalization: Elasticsearch

Line 12 uses ElasticSearch instead of the official spelling Elasticsearch. As per coding guidelines, spell technical and product names as in official sources.

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

In `@resources/comparisons/alternatives.mdx` at line 12, The text uses the
incorrect product capitalization "ElasticSearch"; update the copy to use the
official spelling "Elasticsearch" wherever referenced (for example in the phrase
linking to the Meilisearch vs Elasticsearch section and any anchors like
"meilisearch-vs-elasticsearch" or heading text), ensuring consistency across the
document.
resources/help/comparison_to_alternatives.mdx (1)

12-12: ⚠️ Potential issue | 🟡 Minor

Use official capitalization: Elasticsearch

Same issue as in resources/comparisons/alternatives.mdx - uses ElasticSearch instead of the official Elasticsearch.

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

In `@resources/help/comparison_to_alternatives.mdx` at line 12, The text uses the
incorrect capitalization "ElasticSearch" — update the occurrence in
resources/help/comparison_to_alternatives.mdx (the sentence containing
"Meilisearch measures up against
[ElasticSearch](`#meilisearch-vs-elasticsearch`)") to the official product name
"Elasticsearch" (and update the link text if necessary) so the displayed text
reads "Elasticsearch" while preserving the existing anchor/URL.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@resources/migration/algolia_migration.mdx`:
- Line 62: The install line currently pulls the latest algoliasearch (v5) while
the document and examples use v4 patterns (require("algoliasearch"),
initIndex(), index methods), so either pin the dependency to algoliasearch@4.13
in the npm install command or update all examples to v5 usage: replace CommonJS
default require and initIndex() patterns with the v5 client API (named import /
create client and call methods on the client directly instead of initIndex()).
Ensure references to require("algoliasearch"), initIndex(), and index-object
methods are updated consistently to the chosen approach.

---

Outside diff comments:
In `@resources/help/comparison_to_alternatives.mdx`:
- Line 53: The Rails table row contains an extra trailing pipe "||" that creates
an unintended empty column; edit the row string (the Rails row: "|
[Rails](https://github.com/meilisearch/meilisearch-rails) | ✅ | ✅ | 🔶 <br />WIP
| ✅ ||") to remove the extra pipe so it ends with a single "|" (i.e., remove the
final extra "|") ensuring the Markdown table columns align correctly.
- Around line 1-6: The two near-duplicate docs (the one titled "Comparison to
alternatives" and the other "Alternatives") must be reconciled: either
consolidate content into a single canonical doc and add a redirect from the
other, or keep both but add a short explanatory note at the top describing their
distinct purposes and audience. While reconciling, ensure the "Detailed
comparisons" CardGroup section present in the "Alternatives" doc is
intentionally included or explicitly omitted from "Comparison to alternatives";
add it to the latter if you want the same navigation. Fix the formatting and
content inconsistencies: remove the trailing pipe from the Rails SDK table row
(the malformed "||") and standardize the monitoring dashboard URL path so both
docs point to the same path; update links and link titles accordingly. Finally,
add a brief comment in the chosen canonical doc explaining why the other file
still exists (or delete and add an HTTP redirect) so future authors understand
the intent.

---

Duplicate comments:
In `@resources/comparisons/alternatives.mdx`:
- Line 322: Replace the incorrect capitalization "ElasticSearch" with the
official "Elasticsearch" in the text block that mentions search tools (the
string "ElasticSearch" appears in the sentence starting "Usually, when a
developer is looking for a search tool..."); update that exact token to
"Elasticsearch" so the product name uses the official casing throughout the file
resources/comparisons/alternatives.mdx.
- Line 12: The text uses the incorrect product capitalization "ElasticSearch";
update the copy to use the official spelling "Elasticsearch" wherever referenced
(for example in the phrase linking to the Meilisearch vs Elasticsearch section
and any anchors like "meilisearch-vs-elasticsearch" or heading text), ensuring
consistency across the document.

In `@resources/help/comparison_to_alternatives.mdx`:
- Line 12: The text uses the incorrect capitalization "ElasticSearch" — update
the occurrence in resources/help/comparison_to_alternatives.mdx (the sentence
containing "Meilisearch measures up against
[ElasticSearch](`#meilisearch-vs-elasticsearch`)") to the official product name
"Elasticsearch" (and update the link text if necessary) so the displayed text
reads "Elasticsearch" while preserving the existing anchor/URL.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ae2277bf-e488-47ae-a9c6-576ea8a05a4d

📥 Commits

Reviewing files that changed from the base of the PR and between ab9a6d0 and 5a74e6e.

📒 Files selected for processing (20)
  • docs.json
  • guides/laravel_scout.mdx
  • home.mdx
  • learn/getting_started/what_is_meilisearch.mdx
  • learn/indexing/multilingual-datasets.mdx
  • learn/indexing/optimize_indexing_performance.mdx
  • learn/relevancy/displayed_searchable_attributes.mdx
  • reference/errors/error_codes.mdx
  • resources/comparisons/algolia.mdx
  • resources/comparisons/alternatives.mdx
  • resources/comparisons/elasticsearch.mdx
  • resources/comparisons/mongodb.mdx
  • resources/comparisons/opensearch.mdx
  • resources/comparisons/pinecone.mdx
  • resources/comparisons/qdrant.mdx
  • resources/comparisons/typesense.mdx
  • resources/help/comparison_to_alternatives.mdx
  • resources/help/faq.mdx
  • resources/internals/prefix.mdx
  • resources/migration/algolia_migration.mdx
✅ Files skipped from review due to trivial changes (2)
  • resources/comparisons/pinecone.mdx
  • guides/laravel_scout.mdx
🚧 Files skipped from review as they are similar to previous changes (6)
  • resources/comparisons/elasticsearch.mdx
  • resources/comparisons/opensearch.mdx
  • resources/comparisons/qdrant.mdx
  • learn/getting_started/what_is_meilisearch.mdx
  • resources/internals/prefix.mdx
  • learn/indexing/optimize_indexing_performance.mdx

@CaroFG
Copy link
Contributor

CaroFG commented Mar 16, 2026

The demos section contains wrong info. For instance, it says that where2watch showcases faceted filtering, which it doesn't. It does showcase the similar documents API, which is not in the list.

Move 28 documentation pages into a new Resources tab with four groups:
- Self-hosting (9 files + 3 data backup files)
- Migration (3 files)
- Help (9 files)
- Internals (4 files)

Update docs.json with new Resources tab, remove old groups from Learn
and Guides tabs, add 28 redirects for old paths, and update 27
existing redirects to avoid chains.

Update internal links across 39 MDX files to reflect new paths.

Fix content accuracy issues found by cross-referencing with source:
- configuration.mdx: fix payload limit default, add 9 missing
  experimental CLI flags
- known_limitations.mdx: fix filter depth (2000->200), task DB
  size (10->20GiB)
- webhooks.mdx: fix payload format to nested JSON, add batchUid
- snapshots.mdx: fix first snapshot timing, wrong link anchor
- experimental_features_overview.mdx: add 5 missing features,
  remove non-existent vector store entry
- algolia_migration.mdx: fix facets mapping, batch size, separator
  support
- prefix.mdx: add missing prefixSearch setting
- datatypes.mdx: update charabia version link
- install_meilisearch_locally.mdx: update Docker tag v1.16->v1.37
- updating.mdx: fix heading level
- faq.mdx: fix invalid JSON trailing comma
Entire-Checkpoint: 9c68757644a6
Add 30 new pages from documentation_fork:
- resources/comparisons/ (9 files): individual product comparisons
- resources/demos/ (13 files): feature showcase and use case demos
- resources/self_hosting/deployment/ (4 files): AWS, GCP, Azure, DigitalOcean
- resources/self_hosting/security/master_api_keys.mdx
- resources/internals/bucket_sort.mdx, hannoy.mdx
- resources/migration/previous_docs_version.mdx

Restructure self_hosting to use subdirectories:
- http2_ssl.mdx → security/http2_ssl.mdx
- ram_multithreading_performance.mdx → performance/ram_multithreading.mdx

Update docs.json nav with Demos, Comparisons groups and
Deployment, Security, Performance subgroups. Fix fork-style
links (/products/, /getting_started/) to match current repo
paths. Fix broken glossary links in hannoy.mdx.

Entire-Checkpoint: 9c68757644a6
Step-by-step guide covering data export (Scroll API), vector strategy
(re-embed vs keep existing), data preparation, import, and embedder
configuration. Includes comprehensive comparison tables for concepts,
indexing, search parameters, and API methods. Query examples show
vector search, hybrid search, filtered search, geo search, and faceted
search. Code examples in JavaScript, Python, and Ruby.

Entire-Checkpoint: 9c68757644a6
Points are vector-first (vector + metadata), Documents are
content-first (fields + optional vectors). Also note that importing
vectors is optional since Meilisearch can auto-generate them.

Entire-Checkpoint: 9c68757644a6
Rewrite query comparison to use natural language queries instead of raw
vectors, emphasizing that Meilisearch handles embedding automatically.
Add full-text search example. Move userProvided embedder option into an
Accordion as a secondary alternative. Update What you gain section to
lead with no-more-client-side-embedding benefit.

Entire-Checkpoint: 9c68757644a6
MongoDB guide covers data export via find(), ObjectId conversion, geo
data transformation, aggregation pipeline to REST API comparison, and
Atlas Vector Search to hybrid search migration with auto-embedder.

PostgreSQL guide covers data export via SELECT, tsvector/tsquery to
automatic indexing comparison, pgvector to auto-embedder migration,
PostGIS to _geo conversion, and a keeping-data-in-sync section for
the recommended PostgreSQL + Meilisearch pattern.

Both guides include JavaScript, Python, and Ruby code examples, full
settings/query comparison tables, and side-by-side query examples.
Also links both guides from their respective comparison pages.

Entire-Checkpoint: 9c68757644a6
Step-by-step guide covering data export via Supabase client (.select
with .range pagination), data preparation (tsvector/embedding column
removal, PostGIS geo conversion), and import into Meilisearch.

Includes comparison tables mapping Supabase client methods, Supabase
Vector (pgvector), and underlying PostgreSQL concepts to Meilisearch
equivalents. Query comparison shows Supabase JS client vs Meilisearch
REST API for full-text, filtered, sorted, vector, faceted, and geo
search.

Covers four sync strategies: Database Webhooks, Edge Functions,
Realtime subscriptions, and periodic batch sync. Promotes auto-embedder
as replacement for the entire Supabase Vector pipeline (Edge Functions,
embedding columns, RPC functions, pgvector indexes).

Entire-Checkpoint: 9c68757644a6
Explains how Meilisearch's multi-criteria bucket sort ranking system
works and why it produces better results than BM25 for application
search. Covers the seven default ranking rules, the sequential
evaluation pipeline, and concrete comparisons for typo tolerance, word
proximity, field importance, prefix search, and debuggability. Includes
trade-offs section and hybrid search integration.

Entire-Checkpoint: 9c68757644a6
PostgreSQL full-text search uses ts_rank (term frequency) and
ts_rank_cd (cover density), not BM25. Separate the two models in the
explanation and update the summary table to reflect the differences
(proximity handling, prefix syntax, semantic search approaches).

Entire-Checkpoint: 9c68757644a6
- Reorder nav: Self-hosting, Comparisons, Migration, Demos, Under the Hood, Other Resources
- Rename "Project Info" to "Other Resources", move SDKs + FAQ there
- Move Language page into Under the Hood
- Fix factual errors in comparisons: Algolia federated search, index size,
  filtering; Typesense analytics, boot time, 1-click deploy, contributors,
  ranking score details; OpenSearch governance; PostgreSQL CJK support;
  GPL-3 characterization
- Fix Algolia migration: Python SDK version 3.x→4.x, settings syntax errors
Entire-Checkpoint: 9c68757644a6
- Rewrite Where2Watch, E-commerce, SaaS, Image Search, Music, Geosearch pages
  to highlight their actual key features (hybrid search, multi-tenancy, multimodal, etc.)
- Add Personalized Search and Search Playground as new demo pages
- Add screenshots for E-commerce, Image Search, Music, Geosearch, Personalized, Playground
- Trim less important demos (MoMA, Nobel, Tenant Tokens, Typo, Voice, RubyGems) to concise format
- Reorganize overview into Featured and More demos sections

Entire-Checkpoint: 9c68757644a6
- Move cloud_quick_start to getting_started/first_project in Getting Started tab
- Move documents, indexes, primary_key to resources/internals (Under the hood)
- Move search_preview to resources/self_hosting
- Update all internal links across 36 files
- Add redirects for all 5 moved pages

Entire-Checkpoint: 9c68757644a6
- Move basic_security, resetting_master_key, protected_unprotected to
  resources/self_hosting/security/
- Remove differences_master_api_keys (duplicate of master_api_keys)
- Update all internal links across 31 files
- Add redirects for all 4 moved/removed pages
- Fix redirect chain for /reference/features/authentication

Entire-Checkpoint: 9c68757644a6
…ront-end page

- Move guides/running_production and guides/docker into resources/self_hosting
- Remove guides/front_end/front_end_integration (duplicated in getting started)
- Add redirects for all three moved/removed pages

Entire-Checkpoint: 9c68757644a6
Reorganize 23 self-hosting pages into logical groups following
overview → getting started → deep dive → how-to → reference pattern:

- Add overview pages for self-hosting, deployment, security, configuration, and data backup
- Split 835-line configuration.mdx into overview (concepts) and reference (options)
- Group installation pages under getting_started/ (quick_start, install_locally, docker, search_preview)
- Merge supported_os content into install_locally page
- Evolve snapshots_vs_dumps into enriched data_backup/overview
- Create Advanced group for performance, webhooks, and GPU guides
- Reorder security pages: concepts before tutorials
- Add deployment overview with production checklist
- Update 55+ internal links across 28 files
- Add 8 redirects for backward compatibility

Entire-Checkpoint: 9c68757644a6
Lead with Meilisearch strengths, add sharding and conversational
search differentiators, fix embedding description to reflect
built-in local generation via Candle plus any HTTP API provider.

Entire-Checkpoint: 9c68757644a6
Reframe the page around the DiskANN concept as the broader approach,
with Hannoy as Meilisearch's implementation. Adds explanation of
disk-backed ANN principles and why they matter vs in-memory solutions.

Entire-Checkpoint: 9c68757644a6
Document the 5-tab structure (Getting Started, Learn, References,
Resources, Changelog) in CLAUDE.md. Create reusable skills:
move-page, check-links, new-capability, new-comparison,
update-api-ref, update-changelog.

Entire-Checkpoint: 9c68757644a6
Replace outdated Postman collection guide with OpenAPI import workflow,
add new annotated screenshots, and fix 7 broken /learn/ links across
language, ranking, qdrant migration, and personalized search pages.

Entire-Checkpoint: 9c68757644a6
Add check-missing-redirects script that uses Fathom Analytics traffic
data and the production sitemap to find URLs with traffic but no page
or redirect, and redirects with zero traffic. Remove 206 unused
redirects, add 49 missing ones. Net: 305 -> 148 redirects.
Entire-Checkpoint: 9c68757644a6
@qdequele
Copy link
Member Author

Let's go!

@qdequele qdequele enabled auto-merge March 20, 2026 18:13
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.

2 participants