Trace
The engineering-lifecycle memory & traceability spine — follow the thread from intent to evidence, and back.
Select your AI client below for setup instructions.
Run this command once in your terminal to register Trace with Claude CLI:
mcp add --transport http trace http://demo.esharp.se:8004/mcp
Recent releases
Component search by property — FR #21 (Please 0.127.0, MCP 0.87.0). trace_component_search (and GET /api/please/components) gains propsKey + optional propsValue: find components carrying a given property (e.g. propsKey='CountryOfOrigin'), optionally constrained to a value, instead of fetching all 3000+ to inspect their props. Key/value match is case-insensitive. Props is a value-converted jsonb dictionary EF can't translate, so the filter narrows at the DB then matches in memory before paginating (the library is bounded).
Search labels — free-text, colour-coded tags you can stack onto projects, with a quick-filter bar on the project list (Please 0.126.0, Dashboard 1.78.0). Orthogonal to disciplines: labels carry no capability/logic weight (they never gate UI or tools); they only organise and filter.
- New
please.label(global, reusable) +please.project_label(many-to-many join) tables; a project can hold several labels. - API:
GET/POST/PUT/DELETE /api/please/labels(catalogue CRUD; create is idempotent on name, case-insensitive) andPOST/DELETE /api/please/projects/{id}/labels(assign / unassign). Project list + detail read models now carry alabels[]array. All writes audited (entityTypelabel/project_label). - Dashboard: assigned-label chips + an "+ Label" picker (add an existing label or create a new one with a colour from a curated palette) on the project header; a clickable label quick-filter bar on the project list (AND across selected labels) plus label chips on each project card; and a label manager at
/trace/labels(Trace nav → Labels) to create, rename, recolour, and delete labels globally.
Licensing usage logging — honest recording + Probe-scope attribution (Please 0.125.0, Orchestra 1.6.0, Licensing 0.5.0). Fixes the two reasons Probe usage never showed on /admin/usage:
ILicenseUsageStore.Recordnow returnsbool—truewhen the identity was counted,falsewhen skipped (blank or a non-billable service account likeprobe@esharp.se).LicenseController.Checkoutreturns the real result instead of a hardcodedrecorded: true, so a distributed MCP (incl. Probe) can tell its usage actually landed rather than being silently dropped.- Probe-originated Trace writes meter against the Probe seat.
CallerValidator.AuditSourcerecognises anX-Proberequest header (→ source"probe", mirroringX-Mcp-Tool→"mcp"), andAuditEventServiceroutessource="probe"writes toUsageScope.Probeinstead ofUsageScope.Please. Trace writes from the Probe app no longer mis-count as Trace seats, and (with a real caller email) now register Probe usage.
Note: Probe's own board-review users are still metered inside the external Probe service per Docs/LICENSING.md; this repo records Probe activity that flows through Trace and provides the honest checkout seam. The Probe app must send the human caller's email (not probe@esharp.se) for a seat to count.