Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
b676cbb
fix(theme): replace palette override advice with verified recolor steps
onlyexeption Oct 18, 2026
9363911
Merge branch 'main' into ibarakov/palette-recolor-guidance
onlyexeption Oct 19, 2026
a0eb982
feat: enhance logging and input validation across tools; update READM…
Marina-L-Stoyanova Oct 20, 2026
3d3592a
fix(api-data): resolve xmlns per namespace and fix inheritance
onlyexeption Oct 20, 2026
c282f4d
fix(api-data): stop indexing non-public classes
onlyexeption Oct 20, 2026
c05c166
fix: ensure package IDs maintain canonical casing in validation and t…
Marina-L-Stoyanova Oct 20, 2026
15ffe1e
feat: update MCP publisher version and checksum in workflows; enhance…
Marina-L-Stoyanova Oct 20, 2026
0c0b23f
feat(theme): page large theme files and find entries instead of cutting
onlyexeption Oct 20, 2026
a04f0f5
Merge pull request #18 from Infragistics-Developer-Tools/ibarakov/the…
onlyexeption Oct 20, 2026
6da9169
Fix regex for matching escaped Unicode sequences
onlyexeption Oct 20, 2026
237e2df
Merge pull request #15 from Infragistics-Developer-Tools/ibarakov/xml…
onlyexeption Oct 20, 2026
8d7e560
fix(api-data): drop unusable members, key member types by full name, …
onlyexeption Oct 20, 2026
0c9febd
fix(api-reference): allow member names up to 128 characters
onlyexeption Oct 22, 2026
f2c681a
Merge branch 'mstoyanova/optimizations' into ibarakov/palette-recolor…
onlyexeption Oct 22, 2026
43e79bd
Merge branch 'mstoyanova/package-id-casing' into ibarakov/palette-rec…
onlyexeption Oct 22, 2026
f5c9e0f
Merge pull request #17 from Infragistics-Developer-Tools/mstoyanova/d…
onlyexeption Oct 22, 2026
5f3a2a4
Potential fix for pull request finding 'Read reference data from the …
onlyexeption Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/nuget-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,18 @@ jobs:
done
echo "::error::nuget.org still does not serve ${ID} ${VERSION}"; exit 1

# Pinned and checksum-verified like the SHA-pinned actions: this job holds the registry
# OIDC token. linux_amd64 only, since the job runs on ubuntu-latest. To bump: take the
# mcp-publisher_linux_amd64.tar.gz line from the new release's registry_<version>_checksums.txt
# (https://github.com/modelcontextprotocol/registry/releases).
- name: Download MCP Publisher
env:
MCP_PUBLISHER_VERSION: v1.8.1
MCP_PUBLISHER_SHA256: a06c9096dcb9727c13555b6be26c7effa707b01f06a4c561ba7a3635443cf2cc
run: |
curl -fsSL "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar -xz -f - mcp-publisher
curl -fsSL -o mcp-publisher.tar.gz "https://github.com/modelcontextprotocol/registry/releases/download/${MCP_PUBLISHER_VERSION}/mcp-publisher_linux_amd64.tar.gz"
echo "${MCP_PUBLISHER_SHA256} mcp-publisher.tar.gz" | sha256sum -c -
tar -xzf mcp-publisher.tar.gz mcp-publisher
chmod +x mcp-publisher

- name: Publish to MCP Registry
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ Release/publish process (`npm run release -- <bump>` → PR → GitHub Release w
### Data pipeline (build time, `scripts/`)

- `nuget/WpfDocs.csproj` pins the Infragistics Trial package version (currently 26.1.21) and is the single place to bump it. `docs:restore` fills `nuget/packages/`.
- `scripts/type-extractor/Program.cs` loads every Infragistics DLL into one `AssemblyLoadContext` and writes `nuget/type-info.json` — a flat map of `"Type.Prop" → {typeName,isNullable,isEnum,enumValues}` plus `"Type.__baseType" → "Base"`. This is the only source of property types, enum values, and inheritance; XML docs alone give just summaries.
- `scripts/build-api.ts` parses the NuGet `*.xml` doc files (split-based chunking, not regex-over-whole-file, to avoid backtracking on multi-MB inputs), merges `type-info.json`, then `enrichWithInheritance()` walks `__baseType` chains (cycle-guarded) copying parent members onto children tagged with `declaredOn`. Types are filtered by `EXCLUDE_SUFFIXES`/`EXCLUDE_CONTAINS`/`EXCLUDE_PACKAGES`; members with summary `"internal"` are dropped. When two types share a short name, the one with more documented members wins and the rest are recorded in `alternates`. `ASSEMBLY_XMLNS` maps assembly → xmlns URI/prefix; anything unlisted gets `http://schemas.infragistics.com/xaml` / `ig`. `namespaces.json` is only `Xam*`-prefixed types. `TFM_PREF` and `byVersionDesc` pick one lib folder per package.
- `scripts/type-extractor/Program.cs` loads every Infragistics DLL into one `AssemblyLoadContext` and writes `nuget/type-info.json` — a flat map of `"Assembly|Ns.Type.Prop" → {typeName,isNullable,isEnum,enumValues}` (instance and static properties, plus static `ResourceKey`/`RoutedCommand` fields marked `isField`; keyed by full name because same-named types overwrote each other's entries), `"__baseTypes"` (`"Assembly|Ns.Type" → "Assembly|Ns.Base"`, generic bases as their definition), `"__xaml"` (`"Assembly|Ns.Type" → {xmlns, prefix, ns, xamlName?}`), `"__nonPublicTypes"` (internal / private nested types reflection positively sees as non-public; a type that can't be loaded is never listed) and `"__nonPublicMembers"` (`"Assembly|Ns.Type.Member"` for members of public types that are internal / private / private protected — only when no member of that name on that type is public or protected). The xmlns comes from System.Xaml's `XamlSchemaContext` over the DLLs' own `XmlnsDefinition`/`XmlnsPrefix` attributes — the most specific xmlns that resolves to exactly that type and under which no other type of that name (public or not) lives in a covered namespace, else `clr-namespace:` syntax naming the assembly; nested types are `Outer+Inner`. This is the only source of property types, enum values, inheritance and xmlns; XML docs alone give just summaries.
- `scripts/build-api.ts` parses the NuGet `*.xml` doc files (split-based chunking, not regex-over-whole-file, to avoid backtracking on multi-MB inputs), merges `type-info.json` (its regex-parsed strings are JSON-unescaped: the extractor writes `` ` `` and `<` as ```/`<`), then `enrichWithInheritance()` walks the `__baseTypes` chains by assembly + full name (cycle-guarded) over every parsed type — including bases that lost their short name to a same-named type, so XamGrid's `Cell` subclasses still inherit from it — copying parent members onto children tagged with `declaredOn`. Static key/command fields are listed with the properties (`isField`). Types are filtered by `EXCLUDE_SUFFIXES`/`EXCLUDE_CONTAINS`/`EXCLUDE_PACKAGES`, and non-public types (the XML docs also document ~2,000 internal classes such as `ActivePaneManager`) are left out via `__nonPublicTypes` before short-name collisions are resolved, so a public type wins its name. Members are dropped when their summary is `"internal"`, when `__nonPublicMembers` lists them, or when their doc name has `#` (explicit interface implementations). When two types share a short name, the one with more documented members wins — counted as before the non-public member filter, so no name switches type — and the rest are recorded in `alternates`. Each type's `xamlNamespace`/`defaultPrefix` (and `xamlName` for nested types) come from `__xaml`; types it lacks (open generics, non-public types, DLLs left out of XAML resolution) fall back to `clr-namespace:`. `namespaces.json` is only `Xam*`-prefixed types. `TFM_PREF` and `byVersionDesc` pick one lib folder per package.
- `scripts/build-docs.ts` converts `.adoc` topics to `docs/{slug}.json` + `docs-index.json`. docs-common topics use `{PlaceholderName}` variables resolved from `docs-common/DocsConfig.xml` for the `wpf` product; only folders in `COMMON_INCLUDE` are taken from docs-common.
- `scripts/build-themes.ts` copies `Themes/` (newer ThemeManager family) and `DefaultStyles/` (legacy embedded-BAML `Theme="..."` family) XAML from wpf-resources and records per-file `targetTypes` parsed from `TargetType=` declarations — this is what makes "is component X themeable" lookups content-aware rather than filename-based.
- `scripts/build-guard.ts` `assertBuildStep()` is the fail-loud convention: any step whose output could be legitimately zero due to a missing upstream must assert instead of `console.warn`.
Expand Down
Loading
Loading