Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/capture-output-own-events.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/client-min-level-empty.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/define-evlog-extends.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/init-skills-already-once.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/map-logger-set-and-empty-score.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/map-unscored-banner.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/next-instrumentation-bundling.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/nitro-skip-default-log-expected-errors.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/print-client-ingest-events.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/redact-email-pnpm-paths.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/regexp-redact-patterns-bridge.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/sample-client-ingest.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/silent-drain-warning-nitro.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/skip-transport-success-request-log.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/unwrap-h3-error-cause.md

This file was deleted.

10 changes: 10 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# @evlog/cli

## 0.9.1

### Patch Changes

- [#824](https://github.com/evloghq/evlog/pull/824) [`75a32d8`](https://github.com/evloghq/evlog/commit/75a32d8b98dd321d0579e67f168ca3600b3d81b7) Thanks [@evlogai](https://github.com/apps/evlogai)! - Print the "evlog skills already installed" line once in `evlog init` and `evlog agents`. The plan already lists it, so the status line below now shows only the `npx skills update` refresh command.

- [#822](https://github.com/evloghq/evlog/pull/822) [`2d7503a`](https://github.com/evloghq/evlog/commit/2d7503a1dac7adf2a735e80bc3a676fe4ea6a36e) Thanks [@evlogai](https://github.com/apps/evlogai)! - Fix two `evlog map` results. `useLogger(event).set({ … })` written inline, without binding the logger to a variable, is now credited as request context, so the `context` rule no longer reports the handler as missing `log.set()`. A project with no entry points to score is now graded `unscored` ("nothing to scan") instead of a free "excellent" 100, and `--min-score` exits 1 in that case because there is nothing to meet the threshold against.

- [#823](https://github.com/evloghq/evlog/pull/823) [`b603f28`](https://github.com/evloghq/evlog/commit/b603f2828bcb52001d79f398c4df0970383fe786) Thanks [@evlogai](https://github.com/apps/evlogai)! - `evlog map` no longer draws a score for an unscored scan. A project with no entry points to score showed a full banner reading `100` and a full bar, next to "nothing to scan". The banner now draws `--` with an empty bar, and `--all` shows `--` in place of `100/100`. The JSON output and the `--min-score` gate were already correct and are unchanged.

## 0.9.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evlog/cli",
"version": "0.9.0",
"version": "0.9.1",
"description": "The official command line for evlog",
"author": "HugoRCD <contact@evlog.dev>",
"homepage": "https://evlog.dev",
Expand Down
30 changes: 30 additions & 0 deletions packages/evlog/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# evlog

## 2.31.0

### Minor Changes

- [#805](https://github.com/evloghq/evlog/pull/805) [`7951563`](https://github.com/evloghq/evlog/commit/7951563d3a86335249d08b4c4e55ccd8e92d5ff0) Thanks [@HugoRCD](https://github.com/HugoRCD)! - `defineEvlog()` accepts `extends`, another config to build on, such as a preset published to npm. Objects merge key by key with the config winning on each key, lists are replaced except `redact.paths`, `redact.patterns` and `sampling.keep`, which add up, `plugins` merge by `name`, and a config extends one level only. `mergeEvlogConfig()` applies the same merge outside `defineEvlog()`. `EvlogConfig` also takes `map` and `logs`, the settings `evlog map` and `evlog logs` read from `evlog.config.ts`, and `toLoggerConfig()` and `toMiddlewareOptions()` leave them out.

- [#811](https://github.com/evloghq/evlog/pull/811) [`567bc62`](https://github.com/evloghq/evlog/commit/567bc62ddd87342d20fc7a42745521beb561879d) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Apply `sampling.rates` to browser logs received on the client ingest endpoint. Client events previously skipped head sampling entirely, so `info: 0` still sent every client info log to your drains. A sampled-out client event is now dropped before enrichment and draining, with the same defaults as server events: errors and fatal are kept, trace is dropped unless `sampling.rates.trace` is set. If you tuned rates for server traffic only, check that they still fit your client volume.

### Patch Changes

- [#816](https://github.com/evloghq/evlog/pull/816) [`db19fc2`](https://github.com/evloghq/evlog/commit/db19fc241b6521f561e351263e8c7fb780f0dadf) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Fix `captureOutput` in `evlog/next/instrumentation` sending evlog's own events to drains a second time: in JSON mode, each wide event printed to stdout came back as a `log.info` event, and error events as `log.error` through stderr. evlog now marks its own writes so the capture passes them through.

- [#810](https://github.com/evloghq/evlog/pull/810) [`d476140`](https://github.com/evloghq/evlog/commit/d476140b5ec8c39380d0582db3ecbb21cc626d0e) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Fix every client log being silently dropped in Nuxt when `minLevel` is not set: the public runtime config turns the unset value into `''`, which no level passed. The client logger now falls back to `'debug'` for any value that is not a valid level.

- [#816](https://github.com/evloghq/evlog/pull/816) [`db19fc2`](https://github.com/evloghq/evlog/commit/db19fc241b6521f561e351263e8c7fb780f0dadf) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Fix every route returning 500 with `Cannot find package 'evlog'` in a Next.js app built with Turbopack and deployed without `node_modules` (Vercel, `output: 'standalone'`) when root `instrumentation.ts` uses `defineNodeInstrumentation({ ... })`. The gate loaded `evlog/next/instrumentation/create` through a computed `import()` that the build left out of the output file trace. It now imports the module behind `process.env.NEXT_RUNTIME === 'nodejs'`, so Next.js bundles it into the Node.js build and drops it from the Edge build. With webpack, the module used to load unbundled from `node_modules`, where `NEXT_RUNTIME` is unset, so `captureOutput` never applied. It applies now.

- [#819](https://github.com/evloghq/evlog/pull/819) [`e7c954b`](https://github.com/evloghq/evlog/commit/e7c954bf5adfb3befa4e676342db89eab0ddc85d) Thanks [@evlogai](https://github.com/apps/evlogai)! - Stop Nitro and Nuxt from printing expected `createError` 4xx responses as `[request error] [unhandled]` in production. The wide event already records these errors, so evlog's Nitro error handler now skips Nitro's default logging for `EvlogError` with a status below 500. Server errors and errors that are not from evlog are still logged by Nitro.

- [#821](https://github.com/evloghq/evlog/pull/821) [`6887f13`](https://github.com/evloghq/evlog/commit/6887f13327b617e256115fab2c4872c7ef7e8993) Thanks [@evlogai](https://github.com/apps/evlogai)! - Client events received by the Nuxt and Nitro ingest endpoint are now printed to stdout, the same way server events are. Before, they were only sent to drains, so an app without a drain accepted browser logs with a 204 and they never showed up anywhere. Events still reach your drains, and `silent: true` still suppresses the console output.

- [#817](https://github.com/evloghq/evlog/pull/817) [`038de6a`](https://github.com/evloghq/evlog/commit/038de6a0c041a16bef228dcb243aac968053228a) Thanks [@evlogai](https://github.com/apps/evlogai)! - Fix the built-in `email` redaction masking pnpm store paths in stack traces. Segments such as `node_modules/.pnpm/h3@1.15.11/...` were rewritten to `h***@***.11`, so drained `error.stack` values lost the package name and version. The email pattern now requires a letters-only top-level domain, so real addresses are still masked as `a***@***.com`.

- [#794](https://github.com/evloghq/evlog/pull/794) [`bd3558d`](https://github.com/evloghq/evlog/commit/bd3558dbcc56965d8ff2d57ff4d2965db7b4280b) Thanks [@evlogai](https://github.com/apps/evlogai)! - Fix custom RegExp `redact.patterns` declared in `nuxt.config.ts` (or Nitro module options) being silently dropped: patterns are now serialized as `{ source, flags }` across the config bridges and rebuilt into RegExp on the server. A pattern object without a `source` field is reported instead of skipped, and a function-valued `redact.replacement` / `redact.transform` in the Nuxt module now prints the same warning the standalone Nitro modules already print.

- [#804](https://github.com/evloghq/evlog/pull/804) [`49af75e`](https://github.com/evloghq/evlog/commit/49af75eb53e3bb9bb0642c607328b04d9f0472a0) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Nuxt and Nitro apps that set `silent: true` in the module options no longer print `silent mode is enabled but no drain is configured` at startup. The logger starts from those options before the server plugins attach the drain, so the warning fired even with an `evlog:drain` hook. Standalone `initLogger({ silent: true })` without a drain still warns.

- [#826](https://github.com/evloghq/evlog/pull/826) [`670db27`](https://github.com/evloghq/evlog/commit/670db2784f026145a0f44b6130bd641959f0d53c) Thanks [@evlogai](https://github.com/apps/evlogai)! - Stop the Nuxt client transport endpoint from emitting a request wide event for every batch of client logs. A successful `POST /api/_evlog/ingest` (204) no longer adds a server event next to each `source: "client"` event, in drains or on the console. Failed transport requests (4xx and 5xx) still emit, so a broken transport stays visible. A custom `transport.endpoint` is honoured, and an explicit `exclude` pattern still excludes the route.

- [#825](https://github.com/evloghq/evlog/pull/825) [`2bbd392`](https://github.com/evloghq/evlog/commit/2bbd39292bef4e53f3d6bf341687b86145881761) Thanks [@evlogai](https://github.com/apps/evlogai)! - Stop wide events from repeating the whole error under `error.cause` when h3 wraps a thrown error. h3 keeps the original error as `cause` and copies its message and stack, so every error event carried the message, stack and payload twice. evlog now serializes the original error once and keeps the h3 status fields (`statusCode`, `statusMessage`, `data`). A `cause` that is a different error is still kept.

## 2.30.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/evlog/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "evlog",
"version": "2.30.1",
"version": "2.31.0",
"description": "Modern TypeScript logger — simple logs, wide events, structured errors. Built for scripts, libraries, jobs, edge, and HTTP. One drain pipeline everywhere.",
"author": "HugoRCD <contact@evlog.dev>",
"homepage": "https://evlog.dev",
Expand Down