Skip to content

Releases: willowdev-code/xpp-lens

xpp-lens 1.2.5

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:30

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-lens-1.2.5.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-lens\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. Already installed? Close Claude and run
xpplens update --install (available from 1.2.2), or install.ps1 from this package - your settings and
index are kept.

Changes

Changed

  • Updating no longer needs Claude to be closed. The installer does not stop running xpplens.exe processes any
    more: a file in use is renamed to *.old, so open sessions keep working on the old version and new sessions start
    the new one; the next start of xpplens deletes the leftovers. At the end the installer offers to restart Claude
    Desktop; xpplens update --install --restart-claude (install.ps1 -RestartClaude) does it without asking.
    Claude Code processes in terminals are never stopped.
  • xpp_grep accepts several names separated by ; in objectName and model, like the other tools. The answer
    for standard code without a scope, or with too large a scope, points to xpp_refs / xpp_callers for names.
  • The release package stores its paths with /, as the ZIP format requires.
  • GitHub Actions: actions/checkout v7 and actions/setup-dotnet v6 (Node 24).

Fixed

  • Command line options: -install was silently ignored (only --install was known), so xpplens update -install
    only checked for the update. Options now work with one or two dashes and as --name=value, may come before the
    arguments, and an unknown option or a missing value stops with an error that lists the options of the command.

Released under the MIT License.

xpp-lens 1.2.4

Choose a tag to compare

@github-actions github-actions released this 07 Oct 15:35

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-lens-1.2.4.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-lens\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. Already installed? Close Claude and run
xpplens update --install (available from 1.2.2), or install.ps1 from this package - your settings and
index are kept.

Changes

Added

  • xpp_build_errors reads the result of a Visual Studio project build (BuildProjectResult.xml) next to that of the
    model build. The header shows both build times and the time of the model DLL. Diagnostics of the newer build come
    first and replace those of the model build for the same objects.
  • xpp_build_errors lists the objects changed after the newest build, which are not compiled yet. After a project
    build it also lists the objects changed between the model build and the project build, which are compiled only if
    they are in the project. This answers "did my build take everything?" in one call.
  • xpp_changed since=build (xpplens changed --since build): per package, the objects changed after its last build.

Changed

  • xpplens status / xpp_status start with the xpp-lens version (and an available update) and show the index tiers
    and counts as tables. The console gets box-drawing frames; output redirected to a file or a pipe, or --ascii, gets
    +-| frames; xpp_status returns Markdown tables. Numbers are grouped by thousands; long model lists come last.

Fixed

  • After a project build, xpp_build_errors showed the older model build as the latest result. Objects changed after
    the build were marked only when they had a diagnostic; with a clean build they were not mentioned at all.

Released under the MIT License.

xpp-lens 1.2.3

Choose a tag to compare

@github-actions github-actions released this 07 Oct 13:13

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-lens-1.2.3.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-lens\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. Already installed? Close Claude and run
xpplens update --install (available from 1.2.2), or install.ps1 from this package - your settings and
index are kept.

Changes

Fixed

  • xpp_build_errors pointed at wrong lines: the compiler numbers lines through the object's whole code (the
    declaration without its closing brace, then every method in file order), not from the start of the method. Lines
    are now translated that way and accepted only when they fall into the method the compiler named. Metadata
    diagnostics (form designs, controls, form extensions) show the object's file and the element instead of a raw path.
    Methods of form data sources and controls show where the method starts; their exact line is not mapped yet.

Released under the MIT License.

xpp-lens 1.2.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 11:15

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-lens-1.2.2.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-lens\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. Already installed? Close Claude and run
xpplens update --install (available from 1.2.2), or install.ps1 from this package - your settings and
index are kept.

Changes

Added

  • xpplens update checks GitHub for a newer release; xpplens update --install downloads it, verifies its SHA-256
    digest and runs its installer, keeping settings and index. status mentions an available update found by the
    last check. This is the only network access of xpp-lens and happens only when the command is run.
  • Automated releases: pushing a tag vX.Y.Z runs the tests, checks the tag against the project version, builds
    the package and publishes the release with its notes taken from this file (release-notes.ps1).
  • Continuous integration: GitHub Actions builds the solution and runs the tests on Windows for every push and pull request.
  • SECURITY.md and issue forms for bug reports and feature requests, which ask not to share customer code or data.

Changed

  • xpplens status / xpp_status no longer count all references and labels (tens of seconds on a cold disk);
    --counts / counts=true shows them. A standard tier that is listed but not indexed is explained, with the
    command that indexes it.
  • xpplens build --std-only switches indexStandard on when an installation was made without the standard tier.
  • Running install.ps1 over an existing installation keeps its label languages and PackagesLocalDirectory
    unless -Languages / -PackagesDir are given.

Fixed

  • Taking over an xpp-graft installation could leave the index behind and build a new one from scratch. The index
    files are now moved one by one by xpplens migrate and checked; when they cannot be moved (in use, or the new
    folder already holds an index) the new configuration keeps using the old index where it is.

Released under the MIT License.

xpp-lens 1.2.1

Choose a tag to compare

@willowdev-code willowdev-code released this 06 Oct 18:31

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP — formerly xpp-graft.

Install

Download xpp-lens-1.2.1.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-lens\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. See the README for all options.

Upgrading from xpp-graft

Close Claude and run install.ps1 from this package (without -Languages, to keep your current languages). It takes
over C:\Tools\xpp-graft: settings, the index and the usage log move to %LOCALAPPDATA%\xpp-lens without a rebuild,
and the old MCP entry is replaced by xpp-lens. Delete C:\Tools\xpp-graft afterwards.

Changed

  • Renamed from xpp-graft to xpp-lens, to avoid confusion with the unrelated
    Graft project. Program xpplens.exe, MCP server xpp-lens, configuration
    xpplens.json, default folders C:\Tools\xpp-lens and %LOCALAPPDATA%\xpp-lens, environment variables
    XPPLENS_CONFIG / XPPLENS_VERBOSE / XPPLENS_TIMING / XPPLENS_USAGE. The MCP tool names (xpp_find, …)
    are unchanged.
  • install.ps1 takes over an existing xpp-graft installation: settings (incl. label languages), the index and the
    usage log move over without a rebuild, and the old MCP entries are removed. The old folder is left for you to delete.
  • Release packages are named after the version (xpp-lens-1.2.1.zip) and carry no debug information.

All other features are as in 1.2.0 — see the 1.2.0 release.

An independent project, inspired by Graft. Released under the MIT License.

xpp-graft 1.2.0

Choose a tag to compare

@willowdev-code willowdev-code released this 06 Oct 14:45

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-graft-1.2.0.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-graft\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. See the README for all options.

Upgrading from 1.1

Run install.ps1 from the new package (or build.ps1 -Deploy from source) and restart Claude. Custom models are
re-parsed once at the next start (about a minute); the standard tier is re-indexed once in the background
(up to about an hour on slow disks, resumable) - xpp_status shows the progress. The index grows to about 1 GB.

Added

  • Usage statistics: every MCP call is logged locally (%LOCALAPPDATA%\xpp-graft\usage); xppgraft stats shows
    tokens, time and empty answers per tool, the largest and slowest calls and the latest empty answers.
    xppgraft config --usage-log false switches it off.
  • Several lookups in one call: xpp_find and xpp_object take names separated by ;; xpp_method takes
    method="a;b" or objectName="Obj.method;Obj2::method".
  • Method fragments: xpp_method with match (regex) and/or lines returns only those lines with context,
    numbered with file lines; the signature and variable declarations are always included, skipped parts are marked.
    Long methods returned in full carry a hint about it.
  • Callers inside Microsoft code: the standard tier now stores call references (calls, new, intrinsics) —
    xpp_callers lists them after custom code; standard=false leaves them out. About +300 MB of index;
    xppgraft config --standard-code false keeps the old dictionary-only standard tier.
  • Chained calls: Table::find(x).method(), a.b().c(), new T().m() and var x = A::b() are typed from method
    return types — in xpp_callers, xpp_refs (with member) and xpp_callees.
  • New tools:
    • xpp_scaffold — CoC wrapper (exact signature, default values removed, warnings for private / final /
      non-wrappable methods), table / form / data source / control / field event handlers with parameters learned from
      existing handlers, delegate subscribers, pre/post handlers; class names follow the pattern found in your models.
    • xpp_build_errors — errors and warnings from BuildModelResult.xml mapped to XML file lines, flags files changed
      after the build.
    • xpp_security — menu item / form → privileges (granted access) → duties → roles, and privilege / duty / role views.
    • xpp_join — shortest relation path between two tables as a ready X++ join.
    • xpp_entity — data entity overview (public names, staging, data source tree with joins, field mapping, keys)
      or the entities that use a table.
    • xpp_changed — objects changed on disk since a time, per model.
  • Matching CLI commands: scaffold, build-errors, security, join, entity, changed, stats;
    method --match/--lines/--context, callers --standard false.
  • xUnit test project (tests/XppGraft.Tests) with neutral sample AOT XML; runs in Visual Studio Test Explorer or
    with dotnet test.
  • Visual Studio launch profiles for the new commands.

Changed

  • Analyzer upgrades re-parse custom models once at start-up and re-index the standard tier once in the background,
    package by package (an interrupted run resumes) — no manual rebuild after updating.
  • Parser: data entity keys, query / entity data source joins (on Field=DataSource.Field) and data source tree,
    privilege entry point grants (grant=Read,Update,…).
  • Tool descriptions no longer contain installation-specific examples.
  • The release package also ships CHANGELOG.md and LICENSE; build.ps1 -Test runs the tests before building.
  • The WAL file is trimmed after checkpoints (journal_size_limit), so a large rebuild does not leave it at peak size.

Released under the MIT License.

xpp-graft 1.1.0

Choose a tag to compare

@willowdev-code willowdev-code released this 06 Oct 14:45

X++ (Dynamics 365 F&O) code index served to AI assistants over MCP.

Install

Download xpp-graft-1.1.0.zip, unzip it and run in a regular (non-admin) PowerShell:

powershell -ExecutionPolicy Bypass -File .\xpp-graft\install.ps1 -Languages en-US,pl

Self-contained build - no .NET required on the target machine. See the README for all options.

Highlights

  • Three index tiers: custom models (full code references), Microsoft standard (dictionary), compiled-only packages (from .xref, bin\*.md and resource DLLs).
  • xpp_status lists packages that are on disk but not indexed.
  • Control and menu trees with parent / depth / filter and full control paths; menu extensions show their target menu and position.
  • Literal underscore in name searches; dotted extension names (e.g. *Staging.Contoso) found as objects.
  • Index follows the files on disk (watcher + rescan) - no git required, works with TFVC workspaces.
  • Read-only index detection with live-parse fallback.

Released under the MIT License.