* feat(timeout): add timeout subblock to the api block
* fix(timeout): honor timeout config for internal routes and fix type coercion
- Add AbortController support for internal routes (/api/*) to honor timeout
- Fix type coercion: convert string timeout from short-input to number
- Handle NaN gracefully by falling back to undefined (default timeout)
Fixes#2786Fixes#2242
* fix: remove redundant clearTimeout in catch block
* fix: validate timeout is positive number
Negative timeout values would cause immediate request abort since
JavaScript treats negative setTimeout delays as 0.
* update docs image, update search modal performance
* removed unused keywords type
* ack comments
* cleanup
* fix: add default timeout for internal routes and validate finite timeout
- Internal routes now use same 5-minute default as external routes
- Added Number.isFinite() check to reject Infinity values
* fix: enforce max timeout and improve error message consistency
- Clamp timeout to max 600000ms (10 minutes) as documented
- External routes now report timeout value in error message
* remove unused code
* fix(child-workflow): must bypass hiddenFromDisplay config
* fix passing of spans to be in block log
* keep fallback for backwards compat
* fix error message formatting
* clean up
* fix(workflow): update container dimensions on keyboard movement
* fix(workflow): avoid duplicate container updates during drag
Add !change.dragging check to only handle keyboard movements in
onNodesChange, since mouse drags are already handled by onNodeDrag.
* fix(workflow): persist keyboard movements to backend
Keyboard arrow key movements now call collaborativeBatchUpdatePositions
to sync position changes to the backend for persistence and real-time
collaboration.
* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs (#3044)
* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs
* chore: remove unrelated workflow.tsx changes
* chore: remove comments
* chore: add devtools middleware to search modal store
* fix: allow search data re-initialization when permissions change
* fix: include keywords in search filter + show service name in tool operations
* fix: correct filterBlocks type signature
* fix: move generic to function parameter position
* fix(mcp): correct event handler type for onInput
* perf: always render command palette for instant opening
* fix: clear search input when modal reopens
* fix(helm): move rotationPolicy under privateKey for cert-manager compatibility (#3046)
* fix(helm): move rotationPolicy under privateKey for cert-manager compatibility
* docs(helm): add reclaimPolicy Retain guidance for production database storage
* fix(helm): prevent empty branding ConfigMap creation
* fix(workflow): avoid duplicate position updates on drag end
Check isInDragOperation before persisting in onNodesChange to prevent
duplicate calls. Drag-end events have dragStartPosition still set,
while keyboard movements don't, allowing proper distinction.
* Fix
* Cleanup
* order of ops for validations
* only reachable subflow nodes should hit validation
---------
Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs
* chore: remove unrelated workflow.tsx changes
* chore: remove comments
* chore: add devtools middleware to search modal store
* fix: allow search data re-initialization when permissions change
* fix: include keywords in search filter + show service name in tool operations
* fix: correct filterBlocks type signature
* fix: move generic to function parameter position
* fix(mcp): correct event handler type for onInput
* perf: always render command palette for instant opening
* fix: clear search input when modal reopens
* fix(security): add authentication to tool API routes
* fix(drive): use checkSessionOrInternalAuth to allow browser access
* fix(selectors): use checkSessionOrInternalAuth for UI-accessible routes
* feat(note-block): expand media embed support with tuned aspect ratios
* fix(note-block): add artist parameter to Bandcamp embed URLs
Include the artist subdomain in Bandcamp track and album embed URLs
to ensure proper embed resolution.
* fix(note-block): add required src attribute to track elements
HTML spec requires track elements to have a src attribute.
* fix(note-block): address embed URL matching issues
- Fix YouTube regex to handle v= anywhere in query params
- Fix Twitch channel match to exclude /clip/ URLs
- Remove Mux support (HLS not supported in most browsers)
- Remove Bandcamp support (requires numeric IDs, not slugs)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix(docs): separate local and blob asset resolution for quick-reference
ActionImage now uses local paths directly for PNGs while ActionVideo
uses blob storage with proper path normalization (strips static/ prefix).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(docs): simplify asset resolution by using correct paths directly
Remove path normalization logic from action-media component. Instead,
use the appropriate paths in MDX:
- PNGs: /static/quick-reference/... (local)
- MP4s: quick-reference/... (blob via getAssetUrl)
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix(docs): update requirements to be more accurate for deploying the app
* updated kb to support 1536 dimension vectors for models other than text embedding 3 small
* fix(storage): support Azure connection string for presigned URLs
* fix(kb): update test for embedding dimensions parameter
* fix(storage): align credential source ordering for consistency
* docs(sdk): update README to reflect new interface
* improvement(docs): add quick reference page and update SDK documentation
* docs(copilot): update copilot documentation with all features