chore(repo): version packages - #493
Merged
Merged
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 2, 2026 14:06
2939ad4 to
1336b27
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 2, 2026 14:31
1336b27 to
934abb8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@evlog/cli@0.4.0
Minor Changes
#492
31e5084Thanks @HugoRCD! - feat: addevlog agents— teach the AI agents working in a project how to use evlog. It writes a short, marker-delimited block of evlog conventions intoAGENTS.md(one wide event per operation, grouped context vialog.set(),createError({ why, fix, internal })over bare throws,defineErrorCatalog()once an error repeats,log.audit()on sensitive actions, and what never gets logged) and creates aCLAUDE.mdpointing at it with@AGENTS.md. The block names the request-logger accessor for the detected framework (useLogger(event)on Nuxt and Nitro,useLogger()fromlib/evlog.tson Next.js,req.context.logon TanStack Start) and falls back to a generic one when detection finds nothing, so the command is useful outside the four frameworksevlog mapcovers.The agent skills are installed by shelling out to
npx skills add https://www.evlog.dev, the same wayevlog initruns your package manager rather than unpacking a tarball itself. Each agent reads a different directory (.claude/skills,.agents/skills,.codex/skills, …) and the skills CLI already resolves them, symlinks a canonical copy, and supports a global scope — and since it keeps no manifest, a copy written behind its back would be a second one it could never update. Skills already installed, in any agent directory and either scope, are detected and left fornpx skills update.--skills <a,b>narrows the selection,--globalinstalls for every project,--no-skillswrites the block with nothing spawned,--sourcepoints at another host, and--dry-runprints the plan. Interactive runs hand the terminal to the skills CLI so it can ask which agents to install for; non-interactive runs pass--yesso nothing blocks on a prompt nobody will answer.evlog initnow offers the same step as its last question — theAGENTS.mdandCLAUDE.mdwrites are planned alongside the wiring so there is still one plan and one confirmation, and the skills run next to the package-manager install.--no-agentsskips it. The block never needs the network, so a skills failure is reported without costing the rest of the run.--sourcemust be anhttp:/https:URL and--skillsentries must be lowercase dashed names, both rejected with a catalog error before anything is spawned — on Windows the spawn needs a shell to resolvenpx, so those values would otherwise reach acmd.execommand line. If the skills install fails, theAGENTS.mdblock is rewritten without the pointer to a skill that is now known not to be on disk.Both flows report the skills step whether or not it did anything — in the plan, in the written report, and through clack in an interactive run — so "already installed" is never confusable with "forgot to do it".
CliContextgains ahomefield, so the search for installed skills reads the home directory through the context like every otherprocess.*value rather than callingos.homedir()directly.Patch Changes
c739cf8,44705f7]:evlog@2.24.0
Minor Changes
#495
c739cf8Thanks @HugoRCD! - feat: publish wide events on anode:diagnostics_channelNew opt-in entry point
evlog/diagnostics. CallenableDiagnosticsChannel()once at startup and every emitted wide event is published on theevlog.eventchannel:A consumer then subscribes by channel name alone, with no evlog import and no entry in
initLogger():subscribeToWideEvents()is exported for consumers that already depend on evlog and want the payload typed.Subscribers receive the same object drains receive — post-audit, post-redaction, post-enrich — and must treat it as read-only. They run synchronously and are not awaited: this is an observation side channel, not a transport. On Cloudflare, Workers forwards every channel message to a Tail Worker, so enabling it gets wide events out of an isolate with no drain and no
waitUntil.Off by default, and free when off —
node:diagnostics_channelis loaded lazily so it never enters the main bundle graph, and with the channel enabled but unsubscribed the emit path benchmarks identically to having it disabled.#494
44705f7Thanks @HugoRCD! - feat(core): exposedurationMsas a number on the wide eventRequest loggers now write
durationMs(a number, in milliseconds) next to the existingdurationstring.durationkeeps its current shape —"12ms","1.20s"— and is still what the pretty terminal renders;durationMsis the one to query. Backends stop needing a parse step: ClickHouse canavg()andquantile(0.95)()on a real column, LogQL can do| json | durationMs > 1000, and facet-based UIs get a numeric field instead of a string.The ClickHouse adapter's default
toClickHouseRow()maps it to a newduration_mscolumn. Add it to an existing table before upgrading:Durations are measured with a clamped elapsed helper, so a backward wall-clock step (NTP, manual change) during a request can no longer surface a negative
durationMs,duration, or tail-sampling duration.BaseWideEventnow declares both fields, soevent.durationMsis typednumber | undefinedin enrichers and drains. Code that readevent.durationas a number was already wrong at runtime and will now fail to type-check — switch it toevent.durationMs.