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 |
|
Codebase Clarity & Composability |
|
|
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:
- esbuild — fast, minimal config, already used in many Electron projects
- Electron's native ESM support — requires
"type": "module"and sandbox configuration - 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 buildstill 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.