Skip to content

REPL, visual debugging, security and docs

Choose a tag to compare

@darwin darwin released this 14 Dec 00:50
· 256 commits to main since this release
v0.2.0

This release brings significant improvements to the developer experience, security posture, and AI agent integration capabilities.

Interactive REPL for Ruby Development

Supex now includes a REPL server running directly inside SketchUp on port 4433. This enables rapid iteration during development: test Ruby snippets instantly without going through the full MCP request cycle, debug issues interactively, and see results in real time. For RubyMine users, the REPL integrates seamlessly with the IDE's console, supporting multiline code blocks and providing a familiar development workflow.

Batch Screenshots for Visual Debugging

AI agents can now capture multiple screenshots with different camera angles in a single operation using the new take_batch_screenshots tool. This is essential for visual debugging: verify geometry from standard views (top, front, iso), zoom to specific entities, or isolate components to inspect them without surrounding clutter. The tool uses offscreen rendering with zero visual flicker, making it suitable for automated workflows.

Security Hardening

This release adds multiple layers of security controls for production deployments. Optional token authentication (SUPEX_AUTH_TOKEN) protects both Bridge and REPL servers from unauthorized access. Path policies sandbox file operations to configured directories, preventing path traversal attacks. The SUPEX_ALLOW_REMOTE guard ensures servers cannot accidentally bind to network interfaces without explicit opt-in. These features can be enabled incrementally based on your security requirements.

Filesystem-based Agent Documentation

Agent documentation is now accessible via filesystem symlinks instead of MCP resources. This means any AI agent or development tool that can read files can access Supex documentation directly, without requiring special MCP resource handling. User projects simply symlink docs/agents/ as supex-docs/ in their project root, making the documentation immediately available to agents through standard file reading.


What's New

  • Added interactive REPL server for Ruby development directly in SketchUp on port 4433 with RubyMine integration support (f956c2e, b691382, e872f0f, 256ea79)
  • Added batch screenshot tool with multiple camera positions, standard views, custom coordinates, entity zoom, and subtree isolation (786c640, c9dd03d, 74df15a, 581d937)
  • Added standard library (stdlib) with geometry utilities, entity helpers, color functions, and tree inspection (76cbb8d, 2af6d99)
  • Added optional SUPEX_AUTH_TOKEN authentication for Bridge and REPL servers (8cc58e5)
  • Added path policy for file operation sandboxing with SUPEX_PROJECT_ROOT and SUPEX_ALLOWED_ROOTS (33e102c)
  • Added SUPEX_ALLOW_REMOTE guard to prevent accidental network exposure (fb0b057)
  • Added persistent connection with health check and configurable idle timeout (e9966f1)
  • Added CLI plain output mode with TTY detection and SUPEX_PLAIN override (d1195b4)
  • Added request_id correlation in driver and runtime logs for debugging (ec0bf7f)
  • Added protocol, security, and troubleshooting documentation (4164e2a)
  • Added multi-window position save/restore by title in SketchUp launcher (45c9ad0)

Improvements

  • Improved JSON-RPC framing to use strict newline delimiting, fixing issues with braces in string values (c76170a)
  • Improved error handling with structured SketchUpRemoteError preserving JSON-RPC error details (a56fbd9)
  • Improved tree output with Unicode box-drawing characters, type abbreviations, and entityID drill-down (7ec854a, deeb046, 1d9fbd3)
  • Improved REPL with timing-based input buffering for RubyMine multiline support (256ea79)
  • Improved REPL client with connection retry and exponential backoff (f5e0445)
  • Isolated eval_ruby binding between calls to prevent local variable leakage (93e5df2)
  • Replaced MCP resources with filesystem-based agent documentation via symlinks (f90a2d9)
  • Restructured docs/agents/ with new prompt.md entry point optimized for AI agent context loading (33bbfbb)
  • Changed zoom_extents from camera type to boolean flag that can combine with any camera type (3ba9085)

Bug Fixes

  • Fixed parallel vector error in custom top-down camera views causing mathematical singularity (f07be86)
  • Fixed InstanceHidden not being applied in batch screenshots (581d937)
  • Fixed extension reload not loading updated files (7144eb1)
  • Fixed SyntaxError not being caught in eval_ruby, causing connection drops (c17aa37)
  • Fixed export tool name drift between driver and runtime (37911e2)
  • Fixed autostart toggle to use ENV variable instead of constant as documented (6c5897a)
  • Fixed CLI -h help conflict by changing host short option to -H (48ad4ce)
  • Fixed window position save/restore in SketchUp launcher (fe9f6ff)