Files
SubMiner/docs/subagents/agents/codex-overlay-three-window-layout-20260223T021606Z-9z2t.md

3.6 KiB

Agent Session: codex-overlay-three-window-layout-20260223T021606Z-9z2t

  • alias: codex-overlay-three-window-layout
  • started_utc: 2026-02-23T02:16:06Z
  • status: handoff
  • mission: Implement top-anchored secondary subtitle overlay window (20%) plus swappable primary overlay region (80%).
  • linked_backlog: TASK-110

Intent

  • Convert overlay runtime from 2 fullscreen windows to 3 windows:
    • secondary window anchored top (max 20% height).
    • visible / invisible windows constrained to remaining 80%.
  • Keep secondary subtitle bar independent from visible/invisible swapping.

Planned Files

  • src/core/services/overlay-window.ts
  • src/core/services/overlay-runtime-init.ts
  • src/core/services/overlay-manager.ts
  • src/main.ts
  • src/preload.ts
  • src/types.ts
  • src/renderer/utils/platform.ts
  • src/renderer/renderer.ts
  • src/renderer/style.css
  • src/main/runtime/overlay-window-factory*.ts
  • src/main/runtime/overlay-window-runtime-handlers*.ts
  • src/main/runtime/overlay-runtime-options*.ts
  • focused tests under src/main/runtime/* + src/core/services/*

Assumptions

  • Secondary bar window should remain independently present while visible/invisible overlays toggle.
  • Top bar height fixed at 20% of tracked mpv bounds (clamped to valid integer px).
  • Existing secondary mode semantics (hidden/visible/hover) remain; hover behavior stays functional.

Phase Log

  • 2026-02-23T02:16:06Z plan: read overlay/runtime wiring, implement secondary window + geometry split, run focused tests.
  • 2026-02-23T02:24:10Z implementation: added secondary overlay window kind/wiring, overlay-manager secondary window ownership, and geometry split helper (top 20% secondary + bottom 80% primary).
  • 2026-02-23T02:27:40Z renderer updates: added secondary layer detection, disabled measurement reports for secondary layer, and CSS layer split (secondary hidden in primary layers; subtitle/modals hidden in secondary layer).
  • 2026-02-23T02:29:51Z validation: bun run tsc --noEmit; bun test src/main/runtime/overlay-window-factory.test.ts src/main/runtime/overlay-window-factory-main-deps.test.ts src/main/runtime/overlay-window-runtime-handlers.test.ts src/renderer/error-recovery.test.ts src/core/services/overlay-window.test.ts; bun run build; node --test dist/core/services/overlay-manager.test.js.

Files Touched

  • src/main.ts
  • src/core/services/overlay-window.ts
  • src/core/services/overlay-window-geometry.ts
  • src/core/services/overlay-window.test.ts
  • src/core/services/overlay-manager.ts
  • src/core/services/overlay-manager.test.ts
  • src/main/runtime/overlay-window-factory.ts
  • src/main/runtime/overlay-window-factory-main-deps.ts
  • src/main/runtime/overlay-window-runtime-handlers.ts
  • src/main/runtime/overlay-window-factory.test.ts
  • src/main/runtime/overlay-window-factory-main-deps.test.ts
  • src/main/runtime/overlay-window-runtime-handlers.test.ts
  • src/preload.ts
  • src/types.ts
  • src/renderer/utils/platform.ts
  • src/renderer/overlay-content-measurement.ts
  • src/renderer/error-recovery.ts
  • src/renderer/style.css
  • backlog/tasks/task-110 - Split-overlay-into-top-secondary-bar-and-bottom-primary-region.md

Handoff

  • Implemented requested 3-window behavior:
    • dedicated top secondary overlay window anchored by mpv geometry split,
    • visible/invisible overlays constrained to lower region.
  • Secondary mode state now syncs window visibility (hidden hides window; non-hidden shows + interactive).
  • Remaining caution: source-level overlay-manager.test.ts still requires dist/node path (Bun ESM + electron named export limitation), but dist test lane passes.