mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 18:22:42 -08:00
feat(overlay): split secondary subtitles into dedicated top window
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user