Skip to content

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 05:34
· 35 commits to main since this release

Added

  • tx mcp serves a model session to AI agents (Claude Code, Codex, Cursor and others) as Model
    Context Protocol tools on stdio: claude mcp add tomix -- tx mcp. Each tool calls the session
    protocol method of the same name, so an agent's edit is one undo step, and
    transaction_begin/transaction_commit group several under a label. When tx ui holds the
    model, tx mcp joins that session, so you watch, undo and save the agent's work in the page.
    Every tool says whether it writes (readOnlyHint, destructiveHint), and --read-only lists
    only the ones that change nothing (#354). The server tells the agent to save a TMDL folder or
    .bim file once its checks pass, and to ask before saving to a server or Power BI Desktop.

  • tx skills install, status, and uninstall install the tomix agent skill for Claude Code
    (.claude/skills/tomix) and Codex and other Agent Skills harnesses (.agents/skills/tomix),
    in the repository or with --user in your home folder. The skill ships inside the binary, so it
    matches the installed tx. status reports copies from another version as outdated, and copies
    that were edited or not written by tx are left alone unless you pass --force
    (TOMIX_SKILL_CONFLICT). The skill covers live sessions too: edit through the tx mcp tools
    rather than the files while a session is open. A new guide, "Using tomix from your agent",
    covers setup, including watching an agent's edits in tx ui (#404).

  • A client of a live session (tx serve, tx ui) can ask in initialize for
    capabilities.diagnostics. The host then recomputes dependencies, DAX diagnostics and,
    with { "bpa": true }, BPA findings 250 ms after the last change and sends
    diagnostics.updated; dax.check and bpa.run answer from those results. deps.get,
    dax.check and bpa.run now read the last committed version instead of waiting for
    another client's transaction (#350).

  • A live session (tx interactive, tx serve, tx ui) on a TMDL folder or .bim file now
    notices when the files change outside it, for example by a git checkout or another editor.
    The session turns stale, and saving fails with TOMIX_SESSION_STALE instead of overwriting
    that change. reload (protocol: session.reload) takes the files' version, and
    save --force (session.save with force) keeps the session's. The tx ui page offers
    both (#351).

  • A live session on a server or Power BI Desktop now notices when the model changes there
    outside it (checked every 10 seconds for Desktop, 30 for a remote server): it turns stale, and save fails with
    TOMIX_SESSION_STALE until save --force. session.status reports canReload (#351).

  • A live session whose Power BI Desktop has closed fails with
    TOMIX_SESSION_SOURCE_UNAVAILABLE instead of a raw connection error; save -o <folder>
    still writes its changes to files. The shell, status (protocol: sourceUnavailable) and
    the tx ui page say so as soon as a check finds it gone (#351).

  • tx refresh on a PBIP's files (the .pbip, its .SemanticModel folder, or anything in it)
    now refreshes the model in the Power BI Desktop that has that PBIP open, as Tabular Editor
    does, instead of failing with TOMIX_REFRESH_NO_REMOTE_TARGET. It says so with
    TOMIX_REFRESH_IN_DESKTOP.

Changed

  • tx now colors its output with your terminal theme's own ANSI colors instead of a fixed
    RGB palette, so it matches Campbell, Dark+, Solarized, high-contrast and color-blind-friendly
    themes. Color is kept for status (red, yellow, green) and DAX and M highlighting; names,
    paths and values print plain, options bold, and secondary text dimmed. DAX keywords are
    magenta, functions bright blue, measure references cyan, and literals green; tables,
    columns and variables are no longer colored. Help section headings are bold and
    uppercase (USAGE, DISCOVER), and the command and option names under them regular weight. The tx ui page moves to warm neutrals with a single persimmon accent.

Fixed

  • save in a live session on a server or Power BI Desktop sends the changes to the server
    instead of failing with TOMIX_SAVE_OUTPUT_REQUIRED, and save -o naming the session's own
    files saves in place, so it no longer skips the check for changes made outside the session
    (#351).
  • A command on a Power BI Desktop that has closed fails at once with TOMIX_DESKTOP_NOT_RUNNING
    and a hint to reopen it, instead of waiting about 4 seconds for a raw socket error.
    Opening a session (tx interactive, tx serve, tx ui) there, or on a server it cannot
    reach, reports the connection error instead of "Unexpected error" (#351).
  • Tables written to a pipe or a file no longer wrap at 80 columns, and use ASCII borders
    (+, -, |) instead of box-drawing characters, as do tx deps --deep trees. A DAX
    expression or format string in tx ls output stays on one row, so it can be grepped or read
    by an agent, and borders no longer turn into mojibake in Windows PowerShell 5.1 or more.
    tx bpa run and tx bpa rules switch their symbols to ASCII there too (* for ●, x
    for ×, - for · and —, OK/FAIL for ✓/✗).

What's Changed

  • feat(session): notice files changed outside a live session; reload or keep (#351) by @bgarcevic in #403
  • feat(refresh): refresh a PBIP in the Power BI Desktop that has it open by @bgarcevic in #407
  • feat(session): notice server-side changes in a live session; clear error when Desktop is gone (#351) by @bgarcevic in #406
  • feat(session): recompute deps, DAX diagnostics and BPA after changes (#350) by @bgarcevic in #415
  • feat: agent skill, plain redirected output, and the ANSI terminal palette by @bgarcevic in #416
  • feat(mcp): tx mcp, an MCP server over the live session (#354) by @bgarcevic in #417
  • feat(output): terminal ANSI palette, ASCII BPA symbols when redirected, uppercase help headings by @bgarcevic in #418
  • feat(skill): cover live sessions, and let agents save file models by @bgarcevic in #419
  • chore(release): prepare 0.10.0 by @github-actions[bot] in #405

Full Changelog: v0.9.0...v0.10.0