Skip to content

v1.0.0 — Multi-format rendering + enterprise security hardening

Latest

Choose a tag to compare

@ryuk3nd0 ryuk3nd0 released this 18 Aug 19:10

v1.0.0 — Multi-format rendering + enterprise security hardening

New features

  • Multi-format outputrender_echart now emits SVG, PNG, and/or self-contained interactive HTML in a single call, selected via the formats argument (default ["svg"]).
    • svg — raw vector text (zero native dependencies).
    • png — base64 image block via the optional @napi-rs/canvas dependency.
    • html — a self-contained interactive page (pinned echarts@6.1.0 CDN).
  • URL export seamexportToUrl persists a rendered artifact and returns a public URL (configure via MCP_EXPORT_DIR + MCP_EXPORT_BASE_URL), for chat-platform targets.

Security hardening

  • SSRF deny-by-default — remote image:// fetches are rejected unless hostlisted via MCP_IMAGE_ALLOW_HOSTS / security.imageAllowHosts.
  • Bounded inputs — option/theme depth (≤ 64) and node count (≤ 100k) guards; pixel budget and maxImageBytes caps.
  • Render timeout — per-image-load AbortSignal timeout.
  • Constant-time auth — SHA-256 + timingSafeEqual bearer-token compare.
  • HTML script-breakout fixsafeJson escaping prevents </script> injection via the embedded option.
  • Non-root containerUSER nodejs in the Dockerfile.

Testing & docs

  • New test:security, test:stress, test:leak, test:enterprise suites (42 tests).
  • New SECURITY.md threat model with implemented controls and residual risks.
  • Refreshed README.md, SKILL.md, and VERIFICATION.md.

Full changelog: v0.1.2...v1.0.0