Repository navigation
v0.3.0
The DevTools half of the plugin was rebuilt on
devframe, and most of what follows
falls out of that: the panel is no longer tied to Vite DevTools, and the same
data it shows is reachable by a coding agent over MCP.
Added
- The panel runs on devframe. The bespoke transport is gone. The panel
works docked in Vite DevTools, in its own tab, or standalone from the CLI. lit-devtoolsCLI.lit-devtools devserves the panel without a Vite
dev server of its own;lit-devtools mcpexposes the panel's data to an MCP
client over stdio, discovering a running dev server on its own.- MCP tools for agents — list the component tree, read recent timeline
events, start and stop a recording, and read why a module fell back to a full
reload instead of a hot patch. - Updates tab. The timeline reads as an explainer for a single update:
what changed, which components re-rendered, and what it cost. - Session export. A recorded session can be written out as a static copy of
the panel — shareable, no dev server needed to open it. - Deep links. Panel views are addressable, so a link opens the tab, the
selected element, or an exported snapshot at the right place. - Flash on update. An opt-in fading outline over every element that
finishes an update, with an optional ramp colouring it by updates per second. - Ambient types for
virtual:lit-plugin/timeline, shipped in
@oddsquad/vite-plugin-lit/clientalongside the CSS query declarations.
Following the custom-layers guide no longer means silencingTS2307. - Documentation site at https://oddcelot.github.io/vite-plugin-lit/, and
a CI workflow that type checks, lints, tests and builds every push.
Changed
- Panel settings persist per developer through devframe's settings store
instead of per browser, so they follow you across browsers and survive
clearing site data.localStoragestays as the page's boot-time cache. - Source links open through the shared open-in-editor service and resolve
against the Vite root. - The docked panel draws its hover outline over a direct page channel rather
than routing through the dev server. - Tooling moved to Vite+ (oxfmt, oxlint, tsgolint); dependencies updated to
TypeScript 7, Vite 8.3, es-module-lexer 3 and magic-string 1. - The README is a front door now; the long-form guides live on the docs site.
Fixed
virtual:lit-plugin/timelinebrokevite build. Both hooks lived on the
serve-only plugin, so nothing claimed the specifier during a build and the
bundler failed on a module the developer never wrote. It now resolves in dev
and build alike, stubbing itself out in any build.- The dev-server endpoints reject cross-site requests.
- Source metadata is injected in the component class's own scope, so it can no
longer reference a class that isn't in scope. - The DevTools element watch survives a hot patch;
updated()is resolved
lazily rather than captured once. - Recording state is synced to a page runtime when it connects, so a reload
mid-recording keeps recording. recent-eventsworks when called with no arguments, and the documented MCP
endpoint path matches the one the server serves.