Skip to content

Commit d1f3add

Browse files
authored
Merge pull request peopleworks#35 from peopleworks/release/0.15.0
Release 0.15.0
2 parents 523a543 + 101b353 commit d1f3add

6 files changed

Lines changed: 44 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,40 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
99

10+
## [0.15.0] — 2026-08-23
11+
12+
How it works, not only what exists.
13+
14+
Every release until now answered the same shape of question. What entities does this application
15+
have. What does this controller do. What does that rule forbid. All of it true, all of it
16+
declarations — and a business process is not a declaration. It is a path across several of them, and
17+
nothing in the extractor walked a path.
18+
19+
`xaflogic walkthrough --from ApproveOrder` walks it. The scope is **computed**, by a bounded
20+
breadth-first traversal, and not chosen by a language model — because a model asked what belongs in
21+
"the approval process" answers authoritatively, in a form nobody can check, and is wrong in the
22+
places that look exactly like the places it is right. The Mermaid diagram is emitted from that
23+
traversal arrow for arrow, for the same reason and more sharply: a diagram is believed at a glance,
24+
so an invented edge in one is worth less than no diagram at all.
25+
26+
The two halves that make it honest are the ones that took the most care. **A call the walk cannot
27+
follow is printed rather than dropped** — a virtual method is followed to the declaration written
28+
beside the call and reported with every override that may replace it, and the document says outright
29+
that the bodies it never entered mean entities missing from the account. And **`--since` reports what
30+
changed in that one process** against a stored snapshot, which is the question no conversational
31+
agent can answer, because none of them has a yesterday.
32+
33+
`--narrate` is opt-in and, deliberately, the least load-bearing thing here. The model receives the
34+
numbered steps and the code behind them; the only prose that reaches a reader is a paragraph it
35+
managed to key to a step that exists. A document generated with an empty narration is
36+
byte-for-byte the one generated with none.
37+
38+
Also in this release: every declaration now says where it is, `file:line`, in the extraction and in
39+
the MCP tools — the foundation the walkthrough needed and worth having on its own, since the tools
40+
used to hand an agent a name and leave it to search for it. Four appearance-rule defects, two of
41+
them found by [@MBrekhof]. Any model can now answer, and a key is enough. And the Markdown we
42+
generate is Markdown.
43+
1044
### Added
1145

1246
- **Entities, controllers, actions and methods say where they are declared** ([#23], first step).
@@ -842,7 +876,8 @@ applications; this is the point where it becomes a community project.
842876
- `XafLogicExplainer.Core` references no DevExpress assemblies and needs no DevExpress license.
843877
Only the Blazor widget does.
844878

845-
[Unreleased]: https://github.com/peopleworks/XAFLogicExplainer/compare/v0.14.0...HEAD
879+
[Unreleased]: https://github.com/peopleworks/XAFLogicExplainer/compare/v0.15.0...HEAD
880+
[0.15.0]: https://github.com/peopleworks/XAFLogicExplainer/releases/tag/v0.15.0
846881
[0.14.0]: https://github.com/peopleworks/XAFLogicExplainer/releases/tag/v0.14.0
847882
[0.13.0]: https://github.com/peopleworks/XAFLogicExplainer/releases/tag/v0.13.0
848883
[0.12.1]: https://github.com/peopleworks/XAFLogicExplainer/releases/tag/v0.12.1

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
Still 0.x deliberately: the extraction engine is production-proven, but this release
1515
changed its behaviour in six places and has been verified against one real application.
1616
1.0.0 is earned once the extractor has read codebases we did not write. -->
17-
<Version>0.14.0</Version>
17+
<Version>0.15.0</Version>
1818

1919
<TargetFramework>net10.0</TargetFramework>
2020
<ImplicitUsings>enable</ImplicitUsings>

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ project is a no-op. There is an MSBuild `.targets` file if you want it to run on
338338

339339
## Status
340340

341-
**v0.14.0.** The extraction engine is the mature part: it runs in production against real XAF
341+
**v0.15.0.** The extraction engine is the mature part: it runs in production against real XAF
342342
applications. The agent-facing surface is what is landing now, in the open.
343343

344344
| | |
@@ -348,6 +348,7 @@ applications. The agent-facing surface is what is landing now, in the open.
348348
|| **Custom property and list editors**, their client assets, and built-in editors reconfigured at run time |
349349
|| **Version-gated data migrations** — what happened to databases that were not fresh |
350350
|| Incremental change detection, diff reports, multi-project, watch mode |
351+
|| **Walkthrough** — one process traced end to end, with a diagram emitted from the trace, the calls it could not follow, and `--since` |
351352
|| AI enrichment of controllers and actions (`--enrich`) |
352353
|| Blazor in-app help panel |
353354
|| **`AGENTS.md` / `CLAUDE.md` / Copilot instructions** — zero infrastructure, works for everyone |

plugins/xaf-logic-explainer/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "xaf-logic-explainer",
33
"description": "Query a specific DevExpress XAF application: its entities, controllers, actions, business rules and Model Editor customizations, extracted from source with Roslyn.",
4-
"version": "0.14.0",
4+
"version": "0.15.0",
55
"license": "MIT",
66
"author": {
77
"name": "Pedro Hernández (PeopleWorks)",

plugins/xaf-logic-explainer/skills/xaf-application-knowledge/SKILL.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ compatibility: >-
1717
text and never compiles the target project.
1818
metadata:
1919
author: PeopleWorks
20-
version: "0.14.0"
20+
version: "0.15.0"
2121
repository: https://github.com/peopleworks/XAFLogicExplainer
2222
---
2323

@@ -56,6 +56,7 @@ One call usually establishes enough to answer, or to know which detail tool to c
5656
| `xaf_controller` | Asked what a button, command or action actually does — returns the real handler code |
5757
| `xaf_rules` | Asked what the system requires, forbids or computes |
5858
| `xaf_model` | Asked how a screen or list is configured |
59+
| `xaf_walkthrough` | Asked **how** something works, not what exists — traces one process end to end, and names the calls it could not follow |
5960
| `xaf_refresh` | Only if you believe the cached view is stale; changes are detected automatically |
6061

6162
## The inventories are complete

src/XafLogicExplainer.Mcp/.mcp/server.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
{
22
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
33
"name": "io.github.peopleworks/xaf-logic-explainer",
4-
"version": "0.14.0",
4+
"version": "0.15.0",
55
"title": "XAF Logic Explainer",
66
"description": "Query your DevExpress XAF app: entities, controllers, actions, rules, Model Editor.",
77
"packages": [
88
{
99
"registryType": "nuget",
1010
"registryBaseUrl": "https://api.nuget.org/v3/index.json",
1111
"identifier": "XafLogicExplainer.Mcp",
12-
"version": "0.14.0",
12+
"version": "0.15.0",
1313
"transport": {
1414
"type": "stdio"
1515
},

0 commit comments

Comments
 (0)