Releases: Pyra-js/Pyra
Releases · Pyra-js/Pyra
v0.18.4
Added
- Module resolution and path alias support via
ResolveConfigis now wired to esbuild in both dev and production buildsbundler.ts: newbuildEsbuildResolveOptions()helper translatesResolveConfigto esbuildalias,resolveExtensions, andmainFieldsoptions; alias values are resolved to absolute paths automaticallydev-server.ts: all fourbundleFile()call sites now passconfig.resolvebuild.ts:buildEsbuildResolveOptions()spread into both client and serveresbuild.build()calls
RequestTracer.setDetail(detail)method - annotates the most recently closed stage with a detail string without opening a new span; used to attach the matched route ID to theroute-matchstage after the router returnsMetricsStore.isActiveBuild()method - returns true whenstartBuild()has been called without a matchingfinishBuild(); used to coordinate build lifecycle across the file watcher and request handler- Build metrics now fully wired in dev server
startBuild()called in thechangeandaddwatcher handlers when a source file is saved- Orphaned builds (two rapid saves with no intervening request) are closed before the next
startBuild()viaisActiveBuild() finishBuild()called after the response is sent for the first routed request following a file change;totalDurationspans the full file-save-to-response cycle
- Dashboard "Recent Requests" section - live table polling
/_pyra/api/tracesevery 2 seconds- Color-coded method badges (GET, POST, PUT, PATCH, DELETE)
- Color-coded status badges by class (2xx, 3xx, 4xx, 5xx)
- Per-request pipeline stage breakdown with slow-stage highlighting (yellow above 50% of total, red above 80%)
- Relative timestamps ("3s ago", "1m ago")
- Matched route ID shown below the URL when the pattern differs from the path
- Docs:
docs/dashboard.md,docs/request-context.md,docs/cookies.md,docs/plugins.mdx
Fixed
- Double
route-matchentry in request traces - the dev server was opening two separate spans for route matching; the second (zero-duration) span is now replaced withtracer.setDetail(), attaching the route ID to the first span and keepingextractRouteId()correct - Dashboard empty state messages used em dashes; replaced with commas for consistency
Changed
- Dashboard stat cards show
--instead of0when no build data exists yet, avoiding misleading zeros on initial load - Build history rows now include a file count column
- Dashboard "Recent Requests" and "Build History" empty states distinguish between the two conditions with separate messages
v0.16.1
Added
-
CSS pipeline fix in dev server -
import './style.css'in layout/page files now works without Flash of Unstyled Contentbundler.ts: newcssOutputCachestores CSS extracted by esbuild separately from the JS bundle; removed the olddocument.createElement('style')injection that caused FOUC- New
getCSSOutput(filePath)export returns cached CSS for a given entry file dev-server.ts: new/__pyra/styles/*endpoint serves extracted CSS as propertext/cssresponseshandlePageRouteInnereagerly callsbundleFile()for each layout + page before assembly, then injects<link rel="stylesheet" href="/__pyra/styles/...">tags into<head>via<!--pyra-head-->style.cssmoved back tosrc/routes/(co-located with the layout) in all full-stack templates;import './style.css'restored as a standard ES module import
-
Package READMEs:
packages/adapter-react/README.md,packages/core/README.md,packages/shared/README.md- each tailored to its audience (end-user, internal/contributor, type reference) -
.vscode/settings.json- excludespackages/cli/templates/**from Tailwind CSS extension scanning, preventing false "unable to load config" errors caused by the extension attempting CommonJSrequire()on ESM-only template config files
Changed
create-pyrarendering mode prompt labels updated from "SSR / SPA" to "Full-stack / Frontend (SPA)" -valuefields ("ssr"/"spa") are unchanged so template selection is unaffectedpackages/clidev:linkscript changed frompnpm link -gtonpm link- now consistent withcreate-pyra'sdev:link, makingnpm link pyrajs-cliwork correctly in generated test projects- Full-stack template CSS redesigned across all six templates (
create-pyraReact/Preact TS/JS andpyrajs-cliReact TS/JS fullstack) to match the Pyra visual identity
Fixed
vitest.workspace.ts: removeddefineWorkspaceimport that broke TypeScript in Vitest 4 (the export was removed in Vitest 4; workspace files now export the array directly)
Pyra v0.15.2
Full details: CHANGELOG.md
Pyra v0.13.4
Full details: CHANGELOG.md
Pyra v0.13.0
This release introduces improvements to the CLI scaffolding flow and Windows command normalization.
Full details: CHANGELOG.md