mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
3.5 KiB
3.5 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, priority
| id | title | status | assignee | created_date | updated_date | labels | dependencies | priority | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-80 | Strengthen IPC contract typing and runtime payload validation | In Progress |
|
2026-02-18 11:43 | 2026-02-22 00:21 |
|
medium |
Description
IPC handlers still rely on many unknown payload casts in main process paths. This task formalizes typed IPC contracts and validates runtime payloads before dispatch to reduce runtime-only failures.
Suggestions
- Define canonical channel map (
channel -> request/response/error types). - Add boundary validators for untrusted renderer payloads.
- Keep channel registration centralized to avoid drift.
Action Steps
- Inventory IPC channels and payload shapes in
src/main/ipc-runtime.tsand registration callsites. - Introduce shared IPC type map and typed registration helpers.
- Add runtime guards/validators at IPC entry points.
- Remove unsafe casts where typed contracts are introduced.
- Add negative tests for malformed payloads and expected error responses.
- Document IPC contract extension process.
Acceptance Criteria
- #1 IPC channels are defined in a typed central contract
- #2 Runtime payload validation exists for externally supplied IPC data
- #3 Unsafe cast usage in IPC boundary code is materially reduced
- #4 Malformed payloads are handled gracefully and test-covered
Implementation Plan
Plan of record (2026-02-22):
- Add central typed IPC contract module at
src/shared/ipc/contracts.tsand migratesrc/core/services/ipc.ts,src/core/services/anki-jimaku-ipc.ts, andsrc/preload.tsfrom string literals to contract constants/types. - Add runtime IPC payload validators at
src/shared/ipc/validators.tsfor externally supplied payloads (runtime option id/direction/value boundary, subsync request shape, overlay modal, subtitle position, and kiku/jimaku payloads where renderer-supplied). - Wire validators at IPC boundaries so malformed payloads are handled gracefully (return structured
{ ok: false, error }for invoke handlers or no-op/log for fire-and-forget channels) and avoid unsafeascasts in boundary code. - Reduce unsafe casts in runtime IPC wiring (
src/main/dependencies.ts,src/main.ts, IPC composer generics) by narrowing types before domain calls. - Add/extend IPC tests for malformed payload behavior (
src/core/services/ipc.test.ts,src/core/services/anki-jimaku-ipc.test.ts), then runbun run build,bun run test:core:src, andbun run test:core:dist. - Update
docs/architecture.mdwith central IPC contract and boundary-validation conventions; then finalize TASK-80 AC/DoD evidence in Backlog MCP.
Implementation Notes
2026-02-22: Started execution session opencode-task80-ipc-contract-20260222T001728Z-obrv. Loading IPC boundary code and preparing implementation plan via writing-plans before any code edits.
Saved plan document: docs/plans/2026-02-22-task-80-ipc-contract-validation.md. Proceeding with executing-plans implementation flow as requested.
Definition of Done
- #1 IPC-related tests pass
- #2 IPC contract docs updated