Skip to content

Releases: databricks-solutions/mason

v1.5.1 - Chat history reliability and renaming

Choose a tag to compare

@DoyleDev DoyleDev released this 23 Sep 17:54
ef542d2

What’s changed

  • Fixed long chat history selection and loading reliability.
  • Added persistent chat renaming from the sidebar.
  • Simplified button styling with borderless hover states.
  • Updated the desktop app version to 1.5.1.

Merged pull request: #21

Full changelog: v1.5.0...v1.5.1

v1.5.0 — Agentic Workflow Designer

Choose a tag to compare

@DoyleDev DoyleDev released this 11 Jun 19:14
088bbb9

Agentic Workflow Designer

Build multi-model agentic pipelines on a drag-and-drop canvas (sidebar button above Profile, or Cmd+D). Each cell picks a model, a subset of your connected tools, and a prompt; wire cells with flow edges to pipe output downstream, or feedback edges to create bounded revision loops where a reviewer routes work back until it passes. Mix providers freely — a Fable cell can feed an Opus cell whose work a Sonnet cell validates — all through the same governed gateway.

  • Hand-rolled canvas (pan/zoom, drag-to-connect ports, labeled multi-input joins, fan-out/fan-in)
  • Gate cells route via a forced route_output verdict — works across every tool-capable model
  • Bounded feedback loops: per-cell revision cap (editable on the card), live running 3/5 status, and a hard 25-cell-run global budget so loops can't run away
  • Per-cell tool selection; live transcript drawer; workflows saved to ~/.mason/workflows/
  • Built-in Spec → Implement → Test → Review template

Cross-model compatibility

  • Gate stream_options per model family — fixes 400 unknown field "stream_options" on Qwen 3.5 / Llama 4
  • Collapse multiple system messages into one — fixes Gemini models only support one system prompt
  • Per-family max_tokens caps
  • Flatten array-shaped delta.content in the SSE stream — fixes [object Object] output on Qwen 3.5 / Gemini / gpt-oss
  • New npm run test:models cross-model regression sweep (81 scenarios)

v1.4.3 — Progressive markdown rendering

Choose a tag to compare

@DoyleDev DoyleDev released this 02 Jun 18:21
2021a0e

What's new

Live markdown rendering during streaming

Mason used to show raw markdown (## Heading, **bold**, fenced backticks) until the stream finished, then flip the bubble to formatted markdown all at once. Now the response renders progressively as the model types — formatting appears in its final form, never raw.

How it works under the hood: every typewriter tick parses the partial stream and walks a token-aware scanner that finds the last position where all open markdown tokens have closed. The typewriter renders only up to there. Unclosed **, *, `, […](, ``` fences, and any in-progress block-level line are held back invisibly until their closer arrives, then drop into place.

The "Building…" indicator is configurable. Edit THINKING_PHRASES in src/messages.ts to add your own — Mason picks one at random each time it's waiting for the next response. Once content starts streaming, the phrase disappears and the brick animation alone continues below the response.

Smaller things

  • Inline streaming chunks render with proper markdown structure (paragraphs, code blocks, links) — no more <pre-wrap> artifacts colliding with <p> blocks.
  • Code blocks appear with syntax highlighting and copy button the moment the closing fence lands, rather than streaming partially-highlighted.

Full changelog: v1.4.2...v1.4.3

v1.4.2 — Agentic loop polish + Anthropic prompt caching

Choose a tag to compare

@DoyleDev DoyleDev released this 21 May 19:13
61e70ec

What's new

A pile of agent-loop UX and cost fixes that came out of multi-hour SQL/data sessions with Opus 4.7. If you're using Mason for anything tool-heavy, this is worth updating to.

Prompt caching for Claude models — big cost win

Tool schemas are the heaviest static portion of every turn (~16K tokens for ~80 tools). Mason now marks cache_control: ephemeral on the last tool and last system message, so Anthropic caches the entire static prefix for 5 minutes. Subsequent turns within the cache window read at ~10% of input cost — typically 80–90% savings on the static prefix every turn.

Verify it's working in DevTools console after a few turns:

[CHAT] Usage (streamed) — input: 31000, output: 230, cache_created: 0, cache_read: 26017

cache_read climbing turn-over-turn = caching engaged.

OpenAI/GPT models automatic-cache prefixes >1024 tokens, no opt-in needed. Gemini/Meta/Qwen have no standard caching path yet.

Agent loop UX

  • Agent iteration budget raised 10 → 40. Polling patterns (waiting on a job run, multi-step SQL builds) used to silently hit the cap and return to idle with no explanation. Now the budget fits real workflows.
  • Clear stop message when the loop exhausts. No more "looks like a hang" mystery — the chat surfaces Agent loop hit the 40-step budget — send "continue" to keep going.
  • Building bricks stay visible during tool execution and below streaming text. Previously the indicator vanished when "Calling tool: X" appeared, and again once content started streaming — users assumed Mason had frozen during slow MCP calls or model pauses.
  • Empty-response detection. If Opus 4.7 burns its token budget on extended thinking and returns no visible content, Mason now shows a clear hint instead of silently rendering an empty bubble.

Chat reliability

  • max_tokens 4096 → 16384. Gives Opus 4.7 extended-thinking headroom before output, and reduces tool-call argument truncation.
  • trimHistory drops orphan tool results. Anthropic was rejecting whole requests when our message trimming cut between an assistant-with-tool_calls and its result. Now any tool-result message whose tool_call_id isn't matched is pruned.
  • Tool-call argument sanitization. Empty or malformed JSON in function.arguments (from truncation or providers that emit no args for no-param tools) now normalizes to {} so the conversation doesn't wedge.

Full changelog: v1.4.1...v1.4.2

v1.4.1 — UC MCP reliability + chat robustness

Choose a tag to compare

@DoyleDev DoyleDev released this 20 May 21:25
45b83eb

What's new

Mostly about making Unity Catalog external MCP connections (Atlassian, GitHub, future Google/SharePoint MCPs, etc.) actually work end-to-end, plus a handful of chat-loop robustness fixes that surfaced while debugging.

UC external MCP — now connects on first try

  • Auto-authorize on first connect. UC connections return "needs authorization" as a JSON-RPC error embedded in an HTTP-200 response, not a plain 401. Mason now detects this pattern and opens the Authorize browser window automatically; previously it silently logged "Found 0 tools" and required you to copy the URL out of the console.
  • Stop hitting SaaS endpoints directly. A previous directHost shortcut was meant for Databricks Apps (*.databricksapps.com) but was applied to every UC connection — Mason was trying https://mcp.atlassian.com/mcp and https://www.googleapis.com/mcp and getting 404s. The shortcut is now gated on *.databricksapps.com; everything else routes through the UC proxy where credential translation happens.
  • Filter the UC picker to MCP-capable connections only. Many system-managed UC HTTP connections (Google Drive, SharePoint, Gmail, Tavily REST, etc.) are OAuth credential proxies, not MCP servers — they had no business in the MCP picker. Mason now respects the is_mcp_connection flag.
  • Self-heal stale saved URLs. If a saved UC URL persistently 404s, Mason drops it from workspaces.json at the end of auto-connect so it doesn't haunt every restart.

Chat reliability

  • Tool-call argument sanitization. Tool calls coming back from the model with empty, truncated, or otherwise malformed arguments JSON used to wedge the entire conversation — the gateway would 400 on every subsequent turn with Param 'arguments' … is not a valid JSON string. Mason now rewrites bad arguments to "{}" so the tool runs (possibly with the wrong inputs) and the model recovers on the next turn. Logs [CHAT] Tool call <name> had malformed arguments; replacing with {} when this fires.

Full changelog: v1.4.0...v1.4.1

v1.4.0 — Skills

Choose a tag to compare

@DoyleDev DoyleDev released this 19 May 18:22
8c4716f

What's new

Skills — user-authored, on-demand instruction bundles

Mason now supports skills — folders of specialized instructions the LLM can load on demand when the user's request matches. Same progressive-disclosure pattern Anthropic uses, executed locally so it works across every model Mason supports (Claude, GPT, Gemini, Llama, Qwen, custom endpoints) through the Databricks AI Gateway. No beta headers or sandboxed containers required.

How it works:

  1. At chat time, an <available_skills> block lists each enabled skill's name + one-line description in the system prompt.
  2. When relevant, the model calls the new built-in load_skill(slug) tool.
  3. Mason reads the skill's SKILL.md from disk and returns it as the tool result; the model continues with full instructions in context.

Where skills live:

  • ~/.mason/skills/<slug>/SKILL.md — user-authored, edited in Settings
  • ~/.ai-dev-kit/repo/databricks-skills/<slug>/SKILL.md — auto-discovered, read-only (forward-compatible with ai-dev-kit's planned skills-only releases; existing MCP still works in parallel)

UI:

  • Settings → Skills — list / create / edit / delete user skills with enable toggle and auto-load preference.
  • + icon → Skills — quick per-skill enable/disable, mirroring the Tools modal.

Format is Anthropic-compatible (YAML frontmatter + markdown body), so user-authored skills are portable.


Platform notes

  • macOS (Apple Silicon) — signed + notarized DMG/zip attached.
  • Windows (x64) — installer attached (Mason Setup 1.4.0.exe). Windows ARM64 not built in this release.
  • The Windows PowerShell installer (scripts/install.ps1) added in 1.3.13 auto-detects architecture and pulls the matching asset.

Full changelog: v1.3.13...v1.4.0

v1.3.12

Choose a tag to compare

@DoyleDev DoyleDev released this 14 May 04:13
c09d287

What's new

  • Streaming with tools. Chat completions now stream from the first token even when tools (read_file, write_file, ask_user, MCP) are attached. Previously Mason disabled streaming whenever any tool was in scope, so slower models like Opus 4.7 sat on "Building…" until the full response was generated. The SSE loop now accumulates tool_call deltas in the main process and synthesizes the response shape the renderer already understood, so assistant preambles render live and tool calls execute as before.
  • Responses API path (some GPT models) stays non-streamed — different SSE shape.

Full changelog: v1.3.11...v1.3.12

v1.3.11

Choose a tag to compare

@DoyleDev DoyleDev released this 14 May 03:44
98fa81c

What's new

  • New built-in tool: ask_user. The LLM can pause to ask 1–4 clarifying questions before taking further steps, all in a single inline card. You step through the questions, pick an option (or type "Other"), and the answers flow back to the model in one go — no extra round-trip per question. Available alongside read_file / write_file in the Tools modal.
  • Better cross-model support. Normalized message content on the main-process side so models that return content as array-of-parts (Gemini and some others) no longer crash the renderer with the marked() "input is an array" error. ask_user now works on Gemini, Claude, GPT, and the others.

Full changelog: v1.3.10...v1.3.11

v1.3.10

Choose a tag to compare

@DoyleDev DoyleDev released this 11 May 18:49

What's new

  • Internal: full TypeScript migration. The entire Mason runtime (main + preload + all 11 renderer modules) is now TypeScript. Strict mode, typed IPC contract between preload and renderer, ambient typing on window.mason state. No user-visible changes — same flows, same MCP behavior — but every future feature ships on a typed foundation.
  • Settings: scrollable workspaces list. When you have many profiles in ~/.databrickscfg, the list now caps at ~6 visible entries with internal scroll instead of stretching the Settings page.

Full changelog: v1.3.9...v1.3.10

v1.3.9

Choose a tag to compare

@DoyleDev DoyleDev released this 07 May 19:20
be0f762

What's new

  • Auto-OAuth on profile switch: switching to a profile with no cached token now opens the browser sign-in flow automatically — no manual Authenticate click needed.

Full changelog: v1.3.8...v1.3.9