English | [简体中文](./CHANGELOG_CN.md) ## 3.16.0 (2026-??-??) - `Feat(Log)` Add support for `console.timeLog()`. (issue #681, PR #684) - `Feat(Network)` Capture static resource requests (images, scripts, stylesheets, fonts, etc.) via `PerformanceObserver` and display them in the Network panel. (issue #708) - `Feat(Network)` Add WebSocket support: display connections in the Network panel with sent/received messages. (issue #688) - `Fix(Core)` Export public TypeScript types (`VConsoleOptions`, `VConsoleLogOptions`, `VConsoleNetworkOptions`, `VConsoleStorageOptions`, `VConsoleAvailableStorage`) from the package root, so they can be imported via `import type { VConsoleOptions } from 'vconsole'`. Also add `'WS'` to `VConsoleRequestMethod` type. (issue #668) - `Fix(Core)` Fix `getStringWithinLength` truncating by character index instead of byte count, causing multi-byte characters (e.g. Chinese, emojis) to exceed the intended byte limit or be truncated incorrectly. (PR #730) - `Fix(Core)` Fix copy button not working on iOS 17.2 Safari by using Clipboard API with fallback. (PR #672) - `Fix(Log)` Fix log formatting (`%c`, `%s`, `%d`, `%o`) not being recognized when format specifiers are adjacent without spaces (e.g. `%c%s`). (issue #732) - `Fix(Log)` Fix unescaped quotation marks in Tree view and copied JSON output. (PR #678) - `Fix(Storage)` Fix storage key modification failure caused by reactive state being cleared during remove operation. (issue #690, PR #709) - `Fix(Network)` Fix `WebAssembly.instantiateStreaming` type error caused by fetch proxy wrapping wasm responses. (issue #590, PR #711) - `Fix(Network)` Fix wasm files being fetched twice when the Network panel is open, caused by `resp.clone()` teeing the body stream before the wasm check. (issue #674) - `Fix(Network)` Fix `result.value` maybe `undefined` when stream reading is done. (PR #715) - `Fix(Network)` Fix error when fetching `text/event-stream` (SSE) responses, caused by attempting to read the full response body instead of treating it as a stream. (issue #686) - `Fix(Network)` Fix network requests not being captured after `destroy()` and re-creating a new VConsole instance, caused by the network model singleton not being cleared on removal. (issue #695) - `Fix(Network)` Fix `TypeError` when `requestHeader` is `undefined` in the Network panel. (issue #636, PR #693) - `Fix(Log)` Fix JS errors thrown before `DOMContentLoaded` not being captured, by binding `window.error` and `unhandledrejection` listeners in the constructor instead of `onReady()`. (issue #586) - `Fix(Core)` Fix `destroy()` silently doing nothing when called before vConsole finishes initializing (e.g. while DOM is still loading), leaving `VConsole.instance` set and preventing re-creation. The pending `DOMContentLoaded` listener is now removed and the singleton cleared immediately. (issue #587) - `Fix(Core)` Fix switch button not draggable in PC browsers by adding mouse event (`mousedown`/`mousemove`/`mouseup`) support and `user-select: none` to prevent text selection during drag. (issue #677) - `Fix(Core)` Fix inability to select text by touch-dragging in iOS Safari, caused by calling `e.preventDefault()` on `touchstart` in the custom scroll component. (issue #652) - `Fix(Core)` Fix host page's `* { box-sizing: border-box }` leaking into vConsole and breaking layouts (e.g. command input text/cursor stuck to top-left corner) by resetting `box-sizing` to `content-box` inside the vConsole root element. (issue #653) - `Fix(Log)` Fix focus getting trapped in command/filter textarea inputs, where scrolling the log area while a textarea was focused caused log content to disappear. (issue #656) - `Fix(Log)` Fix `TypeError: Cannot read properties of undefined (reading 'update')` when `destroy()` is called while a `requestAnimationFrame` log flush is pending. (issue #649) - `Fix(Network)` Fix `TypeError: Cannot set property fetch of # which has only a getter` when a third-party library defines `window.fetch` as a getter-only property via `Object.defineProperty`. (issue #662) - `Fix(Network)` Fix `fetch.toString()` error (`Function.prototype.toString requires that 'this' be a Function`) in Chrome 61 and other environments that override `Function.prototype.toString`, caused by missing `get` trap in `FetchProxyHandler`. (issue #679) - `Fix(Network)` Fix possible "Cannot read property" error by `sendBeacon`. (issue #615, #629) - `Chore` Upgrade NPM dependencies: Svelte 3 → 5, svelte-preprocess 4 → 6, TypeScript 4 → 5, webpack-dev-server 4 → 5, webpack-cli 4 → 6, and other minor version updates. - `Chore` Remove unused/obsolete dependencies: `mutation-observer` (IE 9/10 polyfill) and `babel-plugin-add-module-exports`. ## 3.15.1 (2023-06-01) - `Feat(Netwrk)` Add new option `network.ignoreUrlRegExp` to skip some requests. (PR #623) - `Fix(Core)` Fix prototype pollution in `vConsole.setOption()`. (issue #616 #621) - `Fix(Core)` Fix plugin event `ready` triggering before its HTML finishes rendering. (issue #591) - `Fix(Log)` Reset group state when `console.clear()` is called. (issue #611) - `Fix(Log)` Compatible with iOS (less than 13.4) that does not support `ResizeObserver`, but there may be a potential performance issue when printing a large number of logs. (issue #610) ## 3.15.0 (2022-11-02) - `Feat(Log)` Add recycle scrolling to imporove performance, and add scroll to top/bottom buttons. (PR #570) - `Feat(Log)` Add support for `console.group(), console.groupCollapsed(), console.groupEnd()`. (issue #545) - `Feat(Network)` Add recycle scrolling to imporove performance. - `Feat(Network)` Add "Start Time" of a request. - `Feat(Network)` Use `curl` instead of `url` as the copy value of a request. (issue #410) - `Fix(Storage)` Fix an event bug that overflow content cannot scroll. (issue #542) - `Fix(Core)` Fix click event on `