Files
SubMiner/backlog/completed/task-12 - Add-renderer-module-bundling-for-multi-file-renderer-support.md

2.7 KiB

id, title, status, assignee, created_date, updated_date, labels, milestone, dependencies, references, priority
id title status assignee created_date updated_date labels milestone dependencies references priority
TASK-12 Add renderer module bundling for multi-file renderer support Done
2026-02-11 08:21 2026-02-16 02:14
infrastructure
renderer
build
Codebase Clarity & Composability
TASK-5
src/renderer/renderer.ts
src/renderer/index.html
package.json
tsconfig.json
high

Description

Currently renderer.ts is a single file loaded directly by Electron's renderer process via a script tag in index.html. To split it into modules (TASK-6), we need a bundling step since Electron renderer's default context doesn't support bare ES module imports without additional configuration.

Options:

  1. esbuild — fast, minimal config, already used in many Electron projects
  2. Electron's native ESM support — requires "type": "module" and sandbox configuration
  3. TypeScript compiler output — if targeting a single concatenated bundle

The build pipeline already compiles TypeScript and copies renderer assets. Adding a bundling step for the renderer would slot into the existing npm run build script.

Acceptance Criteria

  • #1 Renderer code can be split across multiple .ts files with imports
  • #2 Build pipeline bundles renderer modules into a single output for Electron
  • #3 Existing make build still works end-to-end
  • #4 No runtime errors in renderer process

Implementation Notes

Updated root npm build pipeline to use an explicit renderer bundle step via esbuild. Added build:renderer script to emit a single dist/renderer/renderer.js from src/renderer/renderer.ts; build now runs pnpm run build:renderer and preserves existing index/style copy and macOS helper step. Added esbuild to devDependencies.

Final Summary

Implemented renderer bundling step and wired build to use it. This adds pnpm run build:renderer which bundles src/renderer/renderer.ts into a single dist/renderer/renderer.js for Electron to load. Also added esbuild as a dev dependency and aligned pnpm-lock.yaml importer metadata for dependency consistency. Kept index.html/style.css copy path unchanged, so renderer asset layout remains stable.

Implemented additional test-layer type fix after build breakage by correcting makeDepsFromMecabTokenizer and related tokenizeWithMecab mocks to match expected Token vs MergedToken shapes, keeping runtime behavior unchanged while satisfying TS checks.