Skip to content

0.9.8

Choose a tag to compare

@obinnanwachukwu1 obinnanwachukwu1 released this 04 Jul 22:06
· 759 commits to main since this release

Added

  • 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.