feat!(build): cross-runtime pipeline with Node.js support, idempotent debug server, and CI hardening#45
Open
ofriw wants to merge 207 commits into
Open
feat!(build): cross-runtime pipeline with Node.js support, idempotent debug server, and CI hardening#45ofriw wants to merge 207 commits into
ofriw wants to merge 207 commits into
Conversation
…tion-testing buildAssets with esbuildPlugins
…ministic commitsForKey indexing
…ference missing files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tup:hooks First-commit auto-bootstrap was incorrectly claimed but not actually implemented. Update .githooks/pre-commit, deno.json, and contributing.md to clearly state that deno task setup:hooks must be run explicitly.
- Replace any with PluginBuild in BuildPluginLike.setup() signature
- Add DenoPluginModule type for denoPluginImportState cache
- Type esbuildImportState as typeof import('esbuild') instead of any
- Remove as-any casts in getClientBuildPlugins and createBuildContext
- Remove unused APP_ENTRY_POINT import from build.ts
- Remove unused log import from cli/build-assets.ts
- Fix let to const for pending in getCachedImport
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.
Note: This PR was generated by an AI agent. If you'd like to talk with other humans, drop by our Discord!
Summary
Closes #44.
Redesigns the build pipeline with a strict esbuild plugin stack and two-phase CSS pipeline, adds Node.js support across
createBuildContext()andstartDebugServer(), hardens the debug server lifecycle, fixes file-watcher reliability on Windows, and overhauls CI + test infrastructure.Breaking Changes
startDebugServerreturnPromise<never>(never resolves)Promise<void>(resolves on shutdown)AppConfig.cssPathimport './index.css'in JS entrydeno.json/package.json, no cross-runtime fallbackconfig.debugNoMatchErrorfilteringNoMatchErrorclass with exit code 2What's New
createBuildContext(),startDebugServer(), and all server templates now work on Node.jsesbuildPluginsoption oncompile()andstartDebugServer()— custom esbuild plugins in the client bundle pipelineDebugServerSessionexposed viaonReadycallback:{ server, url, stop }onReady/openBrowseroptions onstartDebugServerstartDebugServer— rejects if another instance is runningServer.stop()— promise-cached, safe to call concurrentlyfs.watchcrashes (Node 24.16.0)getRuntime()with.exit(),.getCWD(),.setupSignalHandler(),.openBrowser()withTestCWD,withTestBrowserOpenCommand,withLogCapture,injectTestTransport,injectAppendFailureWhat Changed
buildCombinedCSS()merges vendor CSS (cssPath) + esbuild-bundled app CSS into/index.csswith composite source mapsreadybefore attaching handlers; native watcher resolves 8.3 short names on Windows; polling watcher capped to prevent unbounded memoryDebugServerResources, signal handler dedup,debugServerOrigin()for URL calculationconsole.*→ structuredlog()fromlogging/log.ts;windowcasts made type-safevalidateFilteredRuntimeOutcomes()ensures matched/no-match consistency; progress tracks started (not completed) suites@docusaurus/faster(SWC/Rspack)getRuntime()— no directDeno.*/process.*callsbase/playwright-version.ts; CI cache key hashes that fileWhat Was Removed
@docusaurus/remark-plugin-npm2yarn,@docusaurus/theme-mermaid,core-js-pure,marked, staleglob,memfs, all@types/d3-*deno.jsonopenBrowser/getCwdinternal functions from debug-serverisBrowser(),isDeno(),isNode()replaced bygetRuntime().idin ~60+ call sitesthrowin runtime adaptersawaiton synchronousexit()callsValue: Unified Deno/Node.js build pipeline, production-ready file watching on Windows, reproducible CI with static analysis, structured logging for debugging, and injection-based test infrastructure that eliminates mocks.
Attached is an agent optimized description of the changes in this PR - AGENT_REVIEW.md