chore(backlog): capture overlay_window findings in TASK-20 breakdown

This commit is contained in:
2026-02-12 01:48:19 -08:00
parent 5162cf416a
commit 402788b1e2
7 changed files with 97 additions and 6 deletions

View File

@@ -5,14 +5,14 @@ status: Done
assignee: assignee:
- codex - codex
created_date: '2026-02-12 02:27' created_date: '2026-02-12 02:27'
updated_date: '2026-02-12 02:56' updated_date: '2026-02-12 09:42'
labels: labels:
- overlay - overlay
- ux - ux
- investigation - investigation
dependencies: [] dependencies: []
documentation: documentation:
- docs/overlay-window-sizing-investigation.md - overlay_window.md
priority: high priority: high
--- ---
@@ -60,6 +60,8 @@ Documented current conflict mechanism and architecture limitation: shared fullsc
Proposed renderer-driven content-bounds IPC model, per-window bounds ownership, and a dedicated secondary top-bar window with mode-specific behavior. Proposed renderer-driven content-bounds IPC model, per-window bounds ownership, and a dedicated secondary top-bar window with mode-specific behavior.
Included phased implementation plan with risks and edge-case handling in docs/overlay-window-sizing-investigation.md. Included phased implementation plan with risks and edge-case handling in docs/overlay-window-sizing-investigation.md.
Updated documentation reference to `overlay_window.md` because previous `docs/overlay-window-sizing-investigation.md` path is not present in repository.
<!-- SECTION:NOTES:END --> <!-- SECTION:NOTES:END -->
## Final Summary ## Final Summary

View File

@@ -4,6 +4,7 @@ title: Implement content-bounded overlay windows and decoupled secondary top bar
status: To Do status: To Do
assignee: [] assignee: []
created_date: '2026-02-12 08:47' created_date: '2026-02-12 08:47'
updated_date: '2026-02-12 09:42'
labels: [] labels: []
dependencies: [] dependencies: []
priority: high priority: high
@@ -12,5 +13,14 @@ priority: high
## Description ## Description
<!-- SECTION:DESCRIPTION:BEGIN --> <!-- SECTION:DESCRIPTION:BEGIN -->
Restored parent task after accidental cleanup. Track the overlay sizing redesign and secondary top-bar decoupling initiative. Implement the overlay sizing redesign documented in `overlay_window.md`: move visible/invisible overlays from fullscreen bounds to content-bounded sizing, and decouple secondary subtitle rendering into an independent top bar window/lifecycle.
<!-- SECTION:DESCRIPTION:END --> <!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Per-layer bounds ownership is implemented for overlay windows (no shared full-bounds setter for all layers).
- [ ] #2 Renderer-to-main IPC contract exists for measured overlay content bounds with layer identity and safe validation.
- [ ] #3 Visible and invisible overlays use content-bounded sizing with padding/clamp/jitter protections and full-bounds fallback when measurements are unavailable.
- [ ] #4 Secondary subtitle top bar is decoupled from primary overlay visibility and follows mode-specific behavior.
- [ ] #5 Automated tests and manual validation matrix cover wrapping, style changes, monitor moves, tracker churn, and simultaneous overlay states.
<!-- AC:END -->

View File

@@ -4,6 +4,7 @@ title: Refactor overlay runtime to use per-layer window bounds ownership
status: To Do status: To Do
assignee: [] assignee: []
created_date: '2026-02-12 08:47' created_date: '2026-02-12 08:47'
updated_date: '2026-02-12 09:42'
labels: [] labels: []
dependencies: [] dependencies: []
parent_task_id: TASK-20 parent_task_id: TASK-20
@@ -13,5 +14,13 @@ priority: medium
## Description ## Description
<!-- SECTION:DESCRIPTION:BEGIN --> <!-- SECTION:DESCRIPTION:BEGIN -->
Restored subtask after accidental cleanup. Refactor overlay runtime so each overlay layer owns and applies its bounds independently. Keep tracker geometry as shared origin input only.
<!-- SECTION:DESCRIPTION:END --> <!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 `updateOverlayBoundsService` no longer applies the same bounds to every overlay window by default.
- [ ] #2 Main runtime/manager exposes per-layer bounds update paths for visible and invisible overlays.
- [ ] #3 Window tracker updates feed shared origin data; each layer applies its own computed bounds.
- [ ] #4 Single-layer behavior (visible-only or invisible-only) remains unchanged from user perspective.
<!-- AC:END -->

View File

@@ -4,6 +4,7 @@ title: Add renderer-to-main IPC contract for measured overlay content bounds
status: To Do status: To Do
assignee: [] assignee: []
created_date: '2026-02-12 08:47' created_date: '2026-02-12 08:47'
updated_date: '2026-02-12 09:42'
labels: [] labels: []
dependencies: [] dependencies: []
parent_task_id: TASK-20 parent_task_id: TASK-20
@@ -13,5 +14,13 @@ priority: medium
## Description ## Description
<!-- SECTION:DESCRIPTION:BEGIN --> <!-- SECTION:DESCRIPTION:BEGIN -->
Restored subtask after accidental cleanup. Add renderer-to-main IPC for content measurement reporting, so main process can size each overlay window from post-layout DOM bounds.
<!-- SECTION:DESCRIPTION:END --> <!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Preload exposes a typed API for reporting overlay content bounds with layer metadata.
- [ ] #2 Main-process IPC handler validates payload shape/range and stores latest measurement per layer.
- [ ] #3 Renderer emits measurement updates on subtitle, mode, style, and render-metric changes with throttling/debounce.
- [ ] #4 No crashes or unbounded logging when measurements are missing/empty/invalid; fallback behavior is explicit.
<!-- AC:END -->

View File

@@ -6,6 +6,7 @@ title: >-
status: To Do status: To Do
assignee: [] assignee: []
created_date: '2026-02-12 08:47' created_date: '2026-02-12 08:47'
updated_date: '2026-02-12 09:42'
labels: [] labels: []
dependencies: [] dependencies: []
parent_task_id: TASK-20 parent_task_id: TASK-20
@@ -15,5 +16,13 @@ priority: medium
## Description ## Description
<!-- SECTION:DESCRIPTION:BEGIN --> <!-- SECTION:DESCRIPTION:BEGIN -->
Restored subtask after accidental cleanup. Implement content-bounded sizing for visible/invisible windows using measured rects plus tracker origin, with robust clamping and jitter resistance.
<!-- SECTION:DESCRIPTION:END --> <!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Bounds algorithm applies configurable padding, minimum size, display-workarea clamp, and integer snap.
- [ ] #2 Main-process bounds updates are thresholded/debounced to reduce jitter and unnecessary `setBounds` churn.
- [ ] #3 When no valid measurement exists, layer falls back to safe tracker/display bounds without breaking interaction.
- [ ] #4 Visible+invisible overlays can coexist without full-window overlap/input conflicts caused by shared fullscreen bounds.
<!-- AC:END -->

View File

@@ -0,0 +1,26 @@
---
id: TASK-20.4
title: Implement dedicated secondary top-bar overlay window
status: To Do
assignee: []
created_date: '2026-02-12 09:43'
labels: []
dependencies: []
parent_task_id: TASK-20
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Create and integrate a dedicated secondary subtitle overlay window with independent lifecycle, z-order, bounds, and pointer policy, decoupled from primary visible/invisible overlay windows.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 A third overlay window dedicated to secondary subtitles is created and managed alongside existing visible/invisible windows.
- [ ] #2 Secondary window visibility follows secondary mode semantics (`hidden`/`visible`/`hover`) independent of primary overlay visibility.
- [ ] #3 Secondary subtitle text/mode/style updates are routed directly to the secondary window renderer path.
- [ ] #4 Pointer passthrough/interaction behavior for secondary window is explicit and does not regress existing hover/selection interactions.
- [ ] #5 Window cleanup/lifecycle (create, close, restore) integrates with existing overlay runtime lifecycle.
<!-- AC:END -->

View File

@@ -0,0 +1,26 @@
---
id: TASK-20.5
title: 'Add rollout guards, tests, and validation matrix for content-bounded overlays'
status: To Do
assignee: []
created_date: '2026-02-12 09:43'
labels: []
dependencies: []
parent_task_id: TASK-20
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Add safety controls and verification coverage for the new content-bounded overlay architecture and secondary top-bar window.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Feature flag or equivalent rollout guard exists for switching to new sizing/window behavior.
- [ ] #2 Service-level/unit tests cover bounds clamping, jitter thresholding, invalid measurement fallback, and per-layer updates.
- [ ] #3 Manual validation checklist documents and verifies wrap/no-wrap, style changes, monitor moves, tracker churn, modal interactions, and simultaneous overlay states.
- [ ] #4 Regression checks confirm existing single-layer and startup/shutdown behavior remain stable.
- [ ] #5 Task includes explicit pass/fail notes from validation run(s).
<!-- AC:END -->