Skip to content

mcp-data-platform-v1.61.2

Choose a tag to compare

@github-actions github-actions released this 14 May 03:03
· 123 commits to main since this release
640ebcc

What's fixed

A portal page could go entirely blank when the asset list contained a row whose tags field had been persisted as JSON null. The React render path called .slice(...) on the null value with no surrounding guard, and with no error boundary the whole tree unmounted.

The trigger was specific: api_export calls that didn't supply a tags parameter wrote []string(nil) into the portal_assets.tags jsonb column, which the FE received as "tags": null. Any operator with an api_export-created asset that lacked tags would hit this on the My Assets page.

What changed

Backend — pkg/portal/store.go

  • Insert normalizes nil to []string{} before marshaling, so new rows can never round-trip as null.
  • unmarshalAssetJSON normalizes decoded nil back to []string{} on every read, so rows already persisted as null surface to the API as []. No DB migration needed — affected rows recover on the next portal load.

Frontend — defense in depth
Added (x.tags ?? []).slice(...) guards on every asset-list render site (My Assets, Shared With Me, Resources, Collection Editor) so a single malformed row can never blank the portal again, even if a future regression reintroduces nullable tags.

Upgrading

Drop in v1.61.2 and restart. Affected rows in portal_assets will start returning "tags": [] to the API immediately; no manual DB cleanup is required.

Pull requests

  • #402 — fix(portal): normalize asset tags so nil never reaches the FE

Installation

Homebrew (macOS)

brew install txn2/tap/mcp-data-platform

Claude Code CLI

claude mcp add mcp-data-platform -- mcp-data-platform

Docker

docker pull ghcr.io/txn2/mcp-data-platform:v1.61.2

Verification

All release artifacts are signed with Cosign. Verify with:

cosign verify-blob --bundle mcp-data-platform_1.61.2_linux_amd64.tar.gz.sigstore.json \
  mcp-data-platform_1.61.2_linux_amd64.tar.gz