Repository navigation
Immutable
release. Only release title and notes can be modified.
Major Changes
Minor Changes
- Add typed session metadata and
updateEventLoggerMetadata()to merge updates, emitroot:update, and expose current metadata throughpsandlist().
Usemetadata.versioninstead of top-levelversionin installation options and session listings. Remove the default version andformatVersion; storeformatinmeta.json.metadata
Submitted by @kitten (See #34)
Patch Changes
- Improve core LogStream throughput by queuing complete lines in a chunk as one block while retaining partial tails
Submitted by @kitten (See #49) - Stop delivering buffered live tap events after cancellation, including when the abort signal fires during history replay or between buffered events
Submitted by @kitten (See #53) - Simplify session discovery by retaining newest entries directly and checking process liveness only once per distinct PID
Submitted by @kitten (See #48) ⚠️ Fix livetapsockets, timers, and abort listeners remaining active when iteration stops early. Honor already-aborted signals when following with timeouts
Submitted by @kitten (See #26)- Clarify logger startup by separating worker metadata setup from parent attachment, keeping target parsing free of state changes, and making child-environment publication and cleanup explicit alongside socket setup
Submitted by @kitten (See #32) - Reduce Chrome trace export allocations and map lookups by grouping spans as they arrive, retaining track references, and deriving lane IDs from each track's first thread ID
Submitted by @kitten (See #43) ⚠️ Fix worker initialization events overwriting root session metadata in Chrome Trace and OpenTelemetry exports. Include span start times when calculating the OpenTelemetry session span so it encloses its children
Submitted by @kitten (See #28)- Avoid copying Buffer and Uint8Array input before decoding it in LogStream.write()
Submitted by @kitten (See #50) - Improve OpenTelemetry export throughput by building event attributes directly and avoiding temporary arrays when converting array payloads
Submitted by @kitten (See #47) - Drain captured event backlogs with an advancing queue index instead of shifting the remaining array on every event. Release consumed event references immediately and periodically compact the queue
Submitted by @kitten (See #44) - Share an indexed queue between event capture and live tap to drain buffered event bursts without shifting the remaining array on every item. Live tap also uses a single pending callback instead of a waiter array
Submitted by @kitten (See #45) ⚠️ Fix ending an empty log stream before its file opens so it closes and invokes the end callback
Submitted by @kitten (See #37)⚠️ Fix explicitLOG_EVENTSfile and fd destinations ignoring the version supplied toinstallEventLoggerwhen emittingroot:init
Submitted by @kitten (See #30)⚠️ Fixrecordreporting success when the recorded command exits with a nonzero status, while still writing its trace
Submitted by @kitten (See #23)- Group Chrome trace spans by track in one pass to avoid scanning every event for each track during lane assignment
Submitted by @kitten (See #40) ⚠️ Fix missing worker IDs on ordinary child-process events when the parent logs to an explicit file or file descriptor
Submitted by @kitten (See #25)⚠️ Fix empty captures inside instrumented processes by routing the captured child and its descendants to the capture pipe instead of inherited logger IPC
Submitted by @kitten (See #24)⚠️ Fix typegen emitting invalid declarations for payload property names containing punctuation, quotes, backslashes, or newlines by quoting and escaping property names
Submitted by @kitten (See #29)- Preserve application version metadata when filtering
recordexports
Submitted by @kitten (See #36) ⚠️ Fixrecordreporting success when the recorded command is terminated by a signal, while still writing its trace
Submitted by @kitten (See #35)- Release consumed log queue strings promptly and periodically compact the queue so sustained backlogs and partial lines do not retain previously written data
Submitted by @kitten (See #41) - Reuse converted OpenTelemetry timestamps for session bounds and exported events, avoiding repeated string and BigInt conversions
Submitted by @kitten (See #42) - Reuse the event serializer for completed spans to reduce core bundle size
Submitted by @kitten (See #49) - Check literal event categories and names against the nonempty ASCII identifier convention: letters, digits,
_,-,., or:. Typegen rejects invalid registered names. Dynamic strings remain the caller's responsibility; event serialization is unchanged
Submitted by @kitten (See #27) - Separate shared session metadata and discovery helpers from retention cleanup, and move session listing and selection out of event reading so the CLI and public API use a focused sessions module
Submitted by @kitten (See #33) - Move the hardcoded session
formatto the top level ofmeta.jsonand remove it from application metadata types. Keep the applicationversionin metadata
Submitted by @kitten (See #36) - Settle pending log flushes when their stream closes, reporting an error if shutdown discards buffered data instead of leaving flush callbacks unresolved
Submitted by @kitten (See #53) - Share event-name helpers between trace exporters and removing redundant debug-sink filtering
Submitted by @kitten (See #46) - Share the path and error helper functions between event loggers to avoid allocating them for every events() call
Submitted by @kitten (See #51) - Reuse one session discovery snapshot for listing and retention cleanup, avoiding repeated directory reads, metadata reads, and PID checks
Submitted by @kitten (See #38) - Simplify span serialization by removing unused payload merging
Submitted by @kitten (See #39) - Reuse log batch buffers to reduce allocation and encoding overhead, improving sustained Unicode logging throughput
Submitted by @kitten (See #22) ⚠️ Fix Unicode corruption when a partial log write splits a UTF-8 character, including when backpressure switches writes to socket draining
Submitted by @kitten (See #22)- Prevent bursts from writing into existing handle when log rotation will trigger, which could lead to a loss of recent log events during a large burst
Submitted by @kitten (See #20) - Add missing try-catch for failing log rotation
Submitted by @kitten (See #52)