Audit data and AI Community Toolkit integration docs#1375
Conversation
…t/Aspire b9d4047 Audit all 18 get-started/host/connect pages for Ollama, KurrentDB, Meilisearch, RavenDB, SQLite, and SurrealDB against CommunityToolkit/Aspire commit b9d40479805b74ea20b7dc57cb659d46e6f11c43, fixing runtime-affecting inaccuracies verified against source. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d7f9a0c-8c6d-4579-9b43-b41a361fa19b
Add fit="contain" to the hero <Image> logos on all 18 Ollama, KurrentDB, Meilisearch, RavenDB, SQLite, and SurrealDB get-started/host/connect pages. Without it, Astro crops non-square assets to the 100x100 box (kurrent 3420x755, meilisearch 838x604, ravendb 555x109, surrealdb 512x110); fit="contain" preserves aspect ratio so the complete artwork renders. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d7f9a0c-8c6d-4579-9b43-b41a361fa19b
…tions Convert C#-only AppHost snippets on the KurrentDB, SQLite, SurrealDB, and Meilisearch host pages into synchronized <Tabs syncKey="aspire-lang"> C# (AppHost.cs) and TypeScript (apphost.mts) peers, and remove the redundant capability notes that previously listed the TypeScript APIs instead of showing them. TypeScript shapes verified against CommunityToolkit/Aspire [AspireExport] attributes and committed apphost.mts example fixtures at commit b9d40479805b74ea20b7dc57cb659d46e6f11c43. SurrealDB WithLogLevel(LogLevel) and the callback WithSurrealist overload are C#-only ([AspireExportIgnore]); their polyglot string/options replacements are exported and used in the TypeScript tabs. RavenDB and Ollama host pages already had correct synchronized tabs (verified, unchanged). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d7f9a0c-8c6d-4579-9b43-b41a361fa19b
Replace the trailing '// After adding all resources, run the app...' placeholder in the newly paired C#/TypeScript AppHost snippets on the KurrentDB, SQLite, SurrealDB, and Meilisearch host pages with real run calls: builder.Build().Run(); in C# blocks and await builder.build().run(); in TypeScript blocks (15 C#/15 TS pairs, 30 total), so the tabs are complete runnable examples. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d7f9a0c-8c6d-4579-9b43-b41a361fa19b
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b620d5b1-e665-4478-974d-cb5d2b825c28
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b620d5b1-e665-4478-974d-cb5d2b825c28
There was a problem hiding this comment.
Pull request overview
This PR audits and updates multiple Community Toolkit integration docs (AI + databases) to align guidance and examples with the pinned CommunityToolkit/Aspire commit, including adding synchronized C# and TypeScript AppHost examples and improving integration logo rendering.
Changes:
- Replace C#-only callouts with synchronized C# + TypeScript AppHost tabs and runnable samples across multiple hosting pages.
- Correct connection-property naming and configuration guidance (for example
Uri/DB_URI, updated connection string formats, and updated client settings shapes). - Improve logo rendering (use
fit="contain"broadly; use theme-specific KurrentDB assets viaThemeImage).
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-host.mdx | Adds C#/TS AppHost tabs and makes SurrealDB host examples runnable; improves logo containment. |
| src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-get-started.mdx | Ensures SurrealDB logo remains contained via fit="contain". |
| src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-connect.mdx | Updates SurrealDB connection property names and connection string/config guidance. |
| src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-host.mdx | Adds C#/TS AppHost tabs, updates package ID casing/name, and corrects injected env var naming. |
| src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-get-started.mdx | Removes outdated TS limitation note; keeps capability list aligned; improves logo containment. |
| src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-connect.mdx | Updates settings/property names (for example DisableHealthChecks) and trims references to removed capabilities. |
| src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-host.mdx | Updates TS samples (awaited calls) and improves logo containment. |
| src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-get-started.mdx | Ensures RavenDB logo remains contained via fit="contain". |
| src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-connect.mdx | Updates RavenDB client settings shape (for example Urls, DatabaseName). |
| src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-host.mdx | Adds TS AppHost examples for Meilisearch hosting scenarios and removes “TS not available” note. |
| src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-get-started.mdx | Ensures Meilisearch logo remains contained via fit="contain". |
| src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-connect.mdx | Updates Meilisearch connection property name to Uri and aligns env var usage. |
| src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-host.mdx | Adds C#/TS AppHost tabs, updates container image reference, and switches to theme-aware logo handling. |
| src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-get-started.mdx | Switches to theme-aware KurrentDB logo and updates container image reference. |
| src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-connect.mdx | Switches to theme-aware KurrentDB logo rendering. |
| src/frontend/src/content/docs/integrations/ai/ollama/ollama-host.mdx | Improves logo containment and updates TS GPU vendor example to use the exported enum. |
| src/frontend/src/content/docs/integrations/ai/ollama/ollama-get-started.mdx | Ensures Ollama logo remains contained via fit="contain". |
| src/frontend/src/content/docs/integrations/ai/ollama/ollama-connect.mdx | Updates keyed-client registration sample parameter naming (connectionName). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Frontend HTML artifact readyThe latest frontend build uploaded the This comment updates automatically when a new frontend build artifact is uploaded. |
IEvangelist
left a comment
There was a problem hiding this comment.
🤖 Automated docs‑accuracy review — PR #1375
Reviewer: doc-pr-reviewer skill — two independent passes: Phase A verifies every factual claim against source‑of‑truth code; Phase B exercises the rendered site as a new user, blind to source.
Phase A source of truth: CommunityToolkit/Aspire @ b9d40479805b74ea20b7dc57cb659d46e6f11c43 (the commit this PR pins; resolved SHA identical).
Phase B site: PR head b5ac771 served locally with pnpm dev (Astro dev, no pnpm build); all 18 changed routes exercised with Playwright.
Claims extracted: 24 non‑cosmetic → ✅ 18 verified · 🟡 6 verified‑with‑nuance · ❌ 0 contradicted · ⛔ 0 unverifiable
Render pass: 18/18 routes compile and return 200, 0 console errors, synchronized C#/TypeScript tabs render and sync correctly, added internal links resolve. 1 warning (KurrentDB logo containment).
Verdict: 🟢 COMMENT. This is a high‑accuracy audit — the API shapes, container image, connection‑property renames, package‑casing fixes, and the removal of the now‑inaccurate "SQLite extensions"/"TypeScript not available" content all match the pinned Toolkit source. Two non‑blocking items are called out inline; details below.
Note on the verdict: my source pass initially flagged the Meilisearch client‑package label (claim 10) as contradicted. On closer inspection it's a casing‑only difference on a case‑insensitive NuGet id with a correct link, so I've reclassified it to verified‑with‑nuance — hence COMMENT rather than REQUEST_CHANGES. It's still worth a one‑character fix (inline).
Phase A — Claim verification (vs CommunityToolkit/Aspire)
Everything substantive checks out against the pinned commit. Two things to look at:
🟡 Meilisearch client‑package label — meilisearch-connect.mdx:148 — see inline comment. Dropping the wrong Meilisearch.NET label is a good fix; the canonical id is MeiliSearch (capital S).
The other 5 nuance items are "nuance" only because the doc states a concrete literal that the Toolkit produces by convention rather than as a grep‑able string:
- Env‑var literals
MEILISEARCH_URI,SQLITE_DATASOURCE,DB_URIderive from Aspire's[RESOURCE]_[PROPERTY]convention. The property names they build on (Uri,DataSource) match source exactly, so the literals are correct. ConnectionStrings__dbis the .NET env‑var form ofConnectionStrings:db; the client readsGetConnectionString("db"), so it's right.- The RavenDB "await each call separately" rewrite is correct in practice (the exported polyglot methods return the awaited builder), though no generated
.d.tsis checked in to prove the non‑chaining wording verbatim.
Full 24‑claim verification table (click to expand)
| # | PR location | Claim | Verdict | Toolkit evidence |
|---|---|---|---|---|
| 1 | ollama-connect.mdx |
AddKeyedOllamaApiClient param is connectionName |
✅ verified | CommunityToolkit.Aspire.OllamaSharp/AspireOllamaSharpExtensions.cs:38 |
| 2 | ollama-host.mdx |
TS exports OllamaGpuVendor; withGPUSupport({ vendor: OllamaGpuVendor.AMD }); members AMD,Nvidia |
✅ verified | Hosting.Ollama/GpuVendor.cs:3,10-19; api/...Hosting.Ollama.cs:11-15; playground apphost.mts:27 |
| 3 | ollama-host.mdx |
Integration prefixes hf.co/ when model lacks hf.co//huggingface.co/ |
✅ verified | Hosting.Ollama/OllamaResourceBuilderExtensions.Model.cs:67-85 |
| 4 | kurrentdb-get-started.mdx / kurrentdb-host.mdx |
Image is docker.kurrent.io/kurrent-latest/kurrentdb |
✅ verified | Hosting.KurrentDB/KurrentDBContainerImageTags.cs:8-10 |
| 5 | kurrentdb-host.mdx |
Data volume path /var/lib/kurrentdb |
✅ verified | Hosting.KurrentDB/KurrentDBBuilderExtensions.cs:101-107 |
| 6 | kurrentdb-host.mdx |
TS addKurrentDB, withDataVolume, withDataBindMount exist |
✅ verified | Hosting.KurrentDB/api/...KurrentDB.cs:13-20; example apphost.mts:14,23,26 |
| 7 | meilisearch-connect.mdx |
Property Uri → env MEILISEARCH_URI |
🟡 nuance | property Uri in Meilisearch/MeilisearchResource.cs:55-63; env name is convention‑derived |
| 8 | meilisearch-host.mdx |
Data path /meili_data |
✅ verified | Hosting.Meilisearch/MeilisearchBuilderExtensions.cs:110-116 |
| 9 | meilisearch-host.mdx |
TS addMeilisearch, withDataVolume, withDataBindMount, { masterKey } |
✅ verified | Hosting.Meilisearch/api/...Meilisearch.cs:13-20; example apphost.mts:15-18 |
| 10 | meilisearch-connect.mdx |
Client package label Meilisearch |
🟡 nuance | canonical id is MeiliSearch (Directory.Packages.props:95; nuget.org install snippet). Case‑insensitive; link correct |
| 11 | ravendb-connect.mdx |
Client settings use Urls[] + DatabaseName, not ConnectionString |
✅ verified | RavenDB.Client/RavenDBClientSettings.cs:14,34 |
| 12 | ravendb-host.mdx |
Bind mount maps to /var/lib/ravendb/data |
✅ verified | Hosting.RavenDB/RavenDBBuilderExtensions.cs:375-382 |
| 13 | ravendb-host.mdx |
TS addRavenDB,addDatabase,withDataVolume,withDataBindMount,withLogVolume; separate‑await samples valid |
🟡 nuance | Hosting.RavenDB/api/...RavenDB.cs:13-35; fixtures present; no checked‑in .d.ts for non‑chaining wording |
| 14 | sqlite-host.mdx |
Package id casing CommunityToolkit.Aspire.Hosting.Sqlite |
✅ verified | project path + CommunityToolkit.Aspire.slnx:288 |
| 15 | sqlite-connect.mdx |
DisableHealthChecks (+ SqliteConnectionSettings.DisableHealthChecks) |
✅ verified | Microsoft.Data.Sqlite/SqliteConnectionSettings.cs:6-20 |
| 16 | sqlite-host.mdx |
TS addSqlite, withSqliteWeb, { databasePath, databaseFileName } |
✅ verified | Hosting.Sqlite/SqliteResourceBuilderExtensions.cs:20-21,95-97; example apphost.mts:5-12 |
| 17 | sqlite-host.mdx |
Referenced path env var SQLITE_DATASOURCE |
🟡 nuance | property DataSource in Hosting.Sqlite/SqliteResource.cs:21-26; env name convention‑derived |
| 18 | sqlite-host.mdx |
Removed "SQLite extensions" section no longer describes current APIs | ✅ verified | no WithNuGetExtension/WithLocalExtension/CTASPIRE002 in Hosting.Sqlite; API lists only AddSqlite/WithSqliteWeb |
| 19 | surrealdb-connect.mdx |
Property Uri = ws://{Host}:{Port}/rpc; env DB_URI |
🟡 nuance | Hosting.SurrealDb/SurrealDbServerResource.cs:86-92,121-128; env name convention‑derived |
| 20 | surrealdb-connect.mdx |
Conn string Server=ws://.../rpc;User=...;******;Namespace=...;Database=... |
✅ verified | builder SurrealDbServerResource.cs:66-68 (+ ns/db); test AddSurrealServerTests.cs:121-126 |
| 21 | surrealdb-connect.mdx |
Read conn string via ConnectionStrings__db |
🟡 nuance | client GetConnectionString(connectionName) in SurrealDb/AspireSurrealDbExtensions.cs:19,72-75 |
| 22 | surrealdb-connect.mdx |
SurrealDbClientSettings binds Aspire:Surreal:Client w/ DisableHealthChecks,HealthCheckTimeout |
✅ verified | SurrealDb/SurrealDbClientSettings.cs:12-38 |
| 23 | surrealdb-connect.mdx |
Client package SurrealDb.Net |
✅ verified | CommunityToolkit.Aspire.SurrealDb.csproj:9 |
| 24 | surrealdb-host.mdx |
TS addSurrealServer,addNamespace,addDatabase,withSurrealist,withDataBindMount,withLogLevel(string); levels Trace…None |
✅ verified | Hosting.SurrealDb/api/...SurrealDb.cs:13-41; SurrealDbBuilderExtensions.cs:456-470 (Enum.GetNames<LogLevel>()) |
Phase B — Doc‑tester render pass (blind to source)
Focus: the 18 pages changed by this PR (Ollama, KurrentDB, Meilisearch, RavenDB, SQLite, SurrealDB × get‑started/host/connect). Tester: doc‑tester skill via Playwright against local pnpm dev (http://localhost:4331).
| Category | Passed | Failed | Warnings |
|---|---|---|---|
| Page render (HTTP 200 + compile) | 18 | 0 | 0 |
| Console errors | 18 | 0 | 0 |
| Synchronized C#/TypeScript tabs | pass | 0 | 0 |
| Added internal links resolve | pass | 0 | 0 |
| Logo containment | 5 | 0 | 1 |
Passed checks
- All 18 routes compile on demand and return
200with no console errors. - Synchronized tabs: verified on
sqlite-host(deep‑checked) — clicking TypeScript switches everysyncKey="aspire-lang"group and the TS panels render real code (addSqlite,withSqliteWeb,{ databasePath, databaseFileName }). Same pattern renders on the KurrentDB / Meilisearch / SurrealDB host pages. - Renamed literals render coherently:
Hosting.Sqlitepackage casing,SQLITE_DATASOURCE, MeilisearchUritable, SurrealDBUri+Server=…/rpcconnection string all display consistently across each integration's host/connect pages. - Added links resolve:
/reference/cli/commands/aspire-add/,/get-started/resources/,/get-started/app-host/, and the../*-connect//../*-host/cross‑links all return200. fit="contain"logos (Ollama, Meilisearch, RavenDB, SQLite, SurrealDB) render aspect‑preserved and fully visible — e.g. Meilisearch's 838×604 source is served as a 100×72 image, so the whole mark shows.
⚠️ Warning 1 — KurrentDB logo is center‑cropped, not contained
Location: KurrentDB get‑started / host / connect header logo (ThemeImage).
Issue: This PR's goal #4 is "keep every integration logo contained … so the complete artwork remains visible in light and dark themes," and KurrentDB was switched to ThemeImage specifically for that. But unlike the fit="contain" <Image> pages, ThemeImage renders the KurrentDB wordmark as a 100×100 center‑crop. The source assets are 3420×755, so only the middle of the word survives and the logo reads as "ur|" rather than "Kurrent" — in both light and dark themes.
Evidence (rendered): img[alt="KurrentDB logo"] → naturalWidth×Height = 100×100, object-fit: fill, served webp is a square cover‑crop; by contrast Meilisearch's contained logo serves as 100×72. Element screenshot shows only the centered ur| glyphs.
Suggestion: Have ThemeImage pass a contain/inside fit to Astro's image service (or set width/height that preserve the ~4.5:1 wordmark aspect ratio) so the full KurrentDB artwork renders, matching the other five integrations.
Recommendations
- Non‑blocking: fix the KurrentDB
ThemeImagecontainment so the full wordmark shows (it currently defeats the PR's own logo goal for that one integration). - Nit: align the Meilisearch client‑package label to the canonical
MeiliSearchcasing. - Everything else is accurate and renders cleanly — nice, thorough audit. ✅
Replace the trailing '// After adding all resources, run the app...' placeholder in every AppHost example on the RavenDB host page with real run calls (builder.Build().Run(); in C#, await builder.build().run(); in TypeScript; 6 C#/5 TS), so the samples are complete and runnable as written. Canonicalize the MeiliSearch client NuGet package label and link on the Meilisearch connect page to the official case-sensitive id 'MeiliSearch' (nuget.org install snippet and the Toolkit's Directory.Packages.props use this casing). The C# 'MeilisearchClient' type and 'using Meilisearch;' namespace are unchanged, matching the SDK. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d7f9a0c-8c6d-4579-9b43-b41a361fa19b
Important
This PR is ready for review, but it should be rebased and merged after #1372 because the series relies on the shared mapping and contained-logo guardrails.
Summary
CommunityToolkit/Aspirecommitb9d40479805b74ea20b7dc57cb659d46e6f11c43.Validation
[AspireExport]metadata, and checked-in TypeScript AppHost fixtures.check-data, mapping uniqueness, andgit diff --check.No local
pnpm buildwas run.