Nearly every TS audio node treats audio as Uint8Array instead of decoded PCM samples.
Affected: OverlayAudio, RemoveSilence, Reverse, FadeIn, FadeOut, MonoToStereo, StereoToMono,
AudioMixer, SliceAudio, Trim, Normalize, CreateSilence, AudioToNumpy, NumpyToAudio, ConvertToArray.
Root cause: No pydub equivalent. Need ffmpeg-based or WAV-aware audio processing.
Affected: FrameIterator, Concat, Trim, Reverse, ExtractFrame, FrameToVideo, AddAudio. These concatenate/slice raw bytes instead of using ffmpeg. Fps and GetVideoInfo return hardcoded values.
Affected: Denoise(strength), Stabilize(smoothing,crop_black), Sharpness(luma_amount,chroma_amount), Overlay(overlay_audio_volume), ColorBalance(wrong filter), AddSubtitles(timestamps,font,color,align), Transition(transition_type,offset), SetSpeed(extreme values).
All mesh operations do byte arithmetic instead of real geometry. Affected: Decimate, Boolean3D, Transform3D, RecalculateNormals, CenterMesh, FlipNormals, MergeMeshes, FormatConverter, GetModel3DMetadata, TextTo3D, ImageTo3D.
Nodes that read/write filesystem instead of context asset system: LoadImageAssets, LoadAudioAssets, LoadVideoAssets, LoadTextAssets, LoadCSVAssets, SaveAudio, SaveImage, SaveText, SaveVideo.
File-saving nodes don't emit SaveUpdate. Execute* nodes don't emit LogUpdate.
All lib.os.* nodes (~25) allow unrestricted filesystem access.
- Missing MCP/control tool support
- Missing streaming output (never emits chunks despite declaring streaming)
- Missing use_claude_credentials (Claude Code subscription)
- Missing cwd (working directory)
- Missing stderr collection for error context
- Missing CLAUDECODE env var
- Missing is_cacheable=False
- Tool/function-calling support completely missing
- Wrong default system prompt (short summary vs detailed 8-rule prompt)
- Wrong VAD: server_vad instead of semantic_vad
- No audio accumulation or final AudioRef emission
- No cancellation/turn-detected handling
- No multi-response pending counter
- Audio transcript deltas not streamed as chunks
- Listens for WRONG event: conversation.item.input_audio_transcription.completed instead of response.audio_transcript.delta
- Session modalities: text-only vs audio+text
- No segment aggregation logic
- No cancellation handling
- No parallel tool execution (Python uses asyncio.gather)
- No DB-backed thread persistence (uses in-memory map)
- No tool name normalization for tolerant matching
- No iteration limits (Python: max_iterations=32, max_control_tool_calls=16)
- Missing ToolCallUpdate/EdgeUpdate messages
- Missing response_format for structured output
- nodetool.boolean.* (8 nodes)
- nodetool.list.* (22 nodes)
- nodetool.dictionary.* (20 nodes)
- nodetool.numbers.* (2 nodes)
- search.* 34 missing nodes
- lib.http.* (15 nodes)
- lib.date.* (15 nodes)
- lib.json.* (10 nodes)
- lib.math.* (10 nodes)
- lib.uuid.* (7 nodes)
- lib.ocr (1 node)
- Missing is_cacheable=False on trigger/workspace nodes
- Missing refresh_uri() on constant nodes
- Missing _auto_save_asset on OpenAI/Gemini image nodes
- Output wrapping differences ({output:...} vs flat)
- DropNA treats empty string as NA
- Aggregate missing std/var functions
- ModulusArray JS % vs numpy mod for negatives
- SliceArray stop=0 opposite behavior
- DateTime constant wrong utc_offset conversion
- CompareImages does byte comparison instead of preview slider
- LoadImageFolder/LoadAudioFolder ignore include_subdirectories, extensions, pattern props
- SaveImageFile ignores overwrite prop
- TextToImage/ImageToImage missing provider params (guidance_scale, seed, etc.)
- Image GetMetadata wrong output schema