You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added app-mediated external HTTP egress: workspaces accept an externalHttp capability (host allowlist, plain-http opt-in, per-command budgets, concurrency cap, timeout, delegate fetch) so non-loopback requests from project code can be routed through the embedding application, with hardened blocklists for loopback/private/metadata hosts and /proc/tracekernel/net/requests logging.
Added C++ in-workspace HTTP support through plain BSD sockets — no TraceCode-specific API. Project code writes standard POSIX networking (<sys/socket.h>, <netinet/in.h>, <netdb.h>: socket/connect/bind/listen/accept/send/recv/getaddrinfo) and the kernel intercepts it: send/recv/accept are handled at the WASI layer (sock_send/sock_recv/sock_accept), while the calls WASI preview1 cannot express come from an invisibly injected, auto-linked shim. HTTP bytes written to sockets are converted to TraceKernel HTTP messages (and back) over a synchronous SharedArrayBuffer bridge mirroring the Java worker protocol, so loopback listeners and app-mediated external hosts both work; getaddrinfo hostnames ride through to the bridge URL.
Added terminal session environment persistence: export FOO=…, plain shell assignments, and unset now persist across terminal submissions (per-run env overlays still apply once), backed by a new RuntimeCommandOptions.onEnvChanges hook that reports shell variable deltas per command.
Changed
Split the @tracecode/harness-project monolith into focused modules (paths, session, locks, scheduler, patches, observed fs, arg parsers, package manager, language commands, ls, terminal session).
Replaced the browser AsyncLocalStorage shim with explicit command-context threading (CommandBoundFileSystem), lifting browser TraceKernel command concurrency from one to the configured limit.
Made @tracecode/harness-core a real workspace dependency shared as a single copy across published packages.
Unified terminal command parsing onto the just-bash parser: background/; splitting, bare cd/pwd detection, and persistent leading cd are now derived from the interpreter's own AST, so quoting, comments, and subshells behave identically in the terminal layer and command execution (quoted &/; and subshell-internal & no longer split submissions; here-doc submissions run unsplit).
Factored the Java worker client's synchronous TraceKernel HTTP bridge into a shared module now used by both the Java and C++ worker clients.
Debounced and coalesced browser kernel-storage persistence, cached workspace snapshots keyed by filesystem mutation version, and enforced project session expiration lazily on mutation and run.
Fixed
Fixed C# tracing so loop conditions and enumerable headers emit one source-line frame with reads, writes, and snapshots attached instead of a duplicate same-line microframe.
Fixed a synchronous TraceKernel HTTP bridge race shared by the Java and C++ workers where a program that responded to an in-flight request and immediately closed its listener (or exited) could overwrite the unread response with the closed state, turning a real response into a 503.
Preserved readonly session file policy across kernel-storage rehydration and restored the abort controller in JS project worker execution state.