feat(source): open document/source at 50/50 with a draggable divider #17

Open
opened 2026-10-11 12:31:40 +00:00 by KofTwentyTwo · 6 comments
KofTwentyTwo commented 2026-10-11 12:31:40 +00:00 (Migrated from github.com)

When Markdown source is opened, the document and source panes must start with equal widths, and the vertical divider must drag left/right to adjust their split.

Current implementation has a source Thumb and persisted pixel width defaulting to 320px, clamped to 160–600px. This does not satisfy the requested 50/50 opening layout; actual drag behavior needs acceptance.

Acceptance:

  • Opening the source pane initializes a 50% document / 50% source split of the available reading area, excluding the outline and divider. Fresh windows and reopened source panes use this opening split.
  • Drag the actual native divider left/right with immediate layout feedback; remove the fixed 600px ceiling and keep both panes usable within the current window width.
  • Window/DPI/outline resizing keeps the user-adjusted ratio within sensible minimum widths. Closing the source returns the full reading area to the document.
  • Show an appropriate resize cursor and provide an accessible keyboard adjustment path.
  • Preserve source text/selection, paired find, collapsed sections and synchronized scroll; independent document windows retain independent layout while open.
  • Define migration of the old SourceWidth setting without restoring the old 320px opening default. Do not impose cross-session split persistence unless agreed with the owner.
  • Verify actual fresh/reopen 50/50 geometry, physical divider dragging in both directions, window/DPI/outline resizing and keyboard accessibility in native/published and installed stable/dev builds. Preserve core coverage/build/style gates.

Requested by the owner for this Windows version. Related: #10 (source synchronization), #14 (windows), #1 (full application). Implementation and acceptance are pending.

Substantial AI assistance: Codex (GPT-6).

When Markdown source is opened, the document and source panes must start with equal widths, and the vertical divider must drag left/right to adjust their split. Current implementation has a source Thumb and persisted pixel width defaulting to 320px, clamped to 160–600px. This does not satisfy the requested 50/50 opening layout; actual drag behavior needs acceptance. Acceptance: - Opening the source pane initializes a 50% document / 50% source split of the available reading area, excluding the outline and divider. Fresh windows and reopened source panes use this opening split. - Drag the actual native divider left/right with immediate layout feedback; remove the fixed 600px ceiling and keep both panes usable within the current window width. - Window/DPI/outline resizing keeps the user-adjusted ratio within sensible minimum widths. Closing the source returns the full reading area to the document. - Show an appropriate resize cursor and provide an accessible keyboard adjustment path. - Preserve source text/selection, paired find, collapsed sections and synchronized scroll; independent document windows retain independent layout while open. - Define migration of the old SourceWidth setting without restoring the old 320px opening default. Do not impose cross-session split persistence unless agreed with the owner. - Verify actual fresh/reopen 50/50 geometry, physical divider dragging in both directions, window/DPI/outline resizing and keyboard accessibility in native/published and installed stable/dev builds. Preserve core coverage/build/style gates. Requested by the owner for this Windows version. Related: #10 (source synchronization), #14 (windows), #1 (full application). Implementation and acceptance are pending. Substantial AI assistance: Codex (GPT-6).
KofTwentyTwo commented 2026-10-11 13:23:07 +00:00 (Migrated from github.com)

Implemented locally: fresh windows and reopening source start with equal document/source columns, excluding the outline and dividers. Proportional dragging uses the actual shared space, reserves usable minimum widths and removes the old600px source cap. Focused Left/Right resize; Home restores50/50, with visible keyboard focus. The ratio belongs to the window and is intentionally not persisted; legacy SourceWidth remains readable for old settings.

21 core layout regressions cover narrow/large windows, both drag directions, both bounds and invalid measurements. The actual physical-resize case now checks equal visible columns, real drag growth, keyboard reset/resize and equal reopening instead of a saved pixel-width field.

Verified:538 core tests pass at100% measured line coverage, zero-warning Release build and format pass. Real mouse/keyboard/DPI/outline/window-resize geometry acceptance has not run. The running Debug process still has the earlier layout; all work is uncommitted/unpushed pending existing1Password signing authentication. Keep this issue open for native/published/installed acceptance.

Substantial AI assistance: Codex (GPT-6).

Implemented locally: fresh windows and reopening source start with equal document/source columns, excluding the outline and dividers. Proportional dragging uses the actual shared space, reserves usable minimum widths and removes the old600px source cap. Focused Left/Right resize; Home restores50/50, with visible keyboard focus. The ratio belongs to the window and is intentionally not persisted; legacy SourceWidth remains readable for old settings. 21 core layout regressions cover narrow/large windows, both drag directions, both bounds and invalid measurements. The actual physical-resize case now checks equal visible columns, real drag growth, keyboard reset/resize and equal reopening instead of a saved pixel-width field. Verified:538 core tests pass at100% measured line coverage, zero-warning Release build and format pass. Real mouse/keyboard/DPI/outline/window-resize geometry acceptance has not run. The running Debug process still has the earlier layout; all work is uncommitted/unpushed pending existing1Password signing authentication. Keep this issue open for native/published/installed acceptance. Substantial AI assistance: Codex (GPT-6).
KofTwentyTwo commented 2026-10-11 19:59:12 +00:00 (Migrated from github.com)

Current native evidence is 8abbd4d/CI38168946288: full93/97 and focused10/12,zero skips. Physical source hover passes both runs; full palette passes, while focused initial Light palette records actual#1F1F1F versus expected#75628B before pointer input. Published also reproduces that initial-color variant. This is not unconditional highlighting acceptance.

Signed/DCO 9fdfc2d uses WinUI's real native Toggle menu action instead of focus-sensitive mouse fallback; the unchanged physical hover/focus/selection and exact foreground assertions remain. Source reopening/50:50 and focus-scroll alignment remain required. Exact-head CI38170170551 is running; no installed or current-head success claim. All source regressions remain in the required focused gate.

Current native evidence is `8abbd4d`/CI38168946288: full93/97 and focused10/12,zero skips. Physical source hover passes both runs; full palette passes, while focused initial Light palette records actual#1F1F1F versus expected#75628B before pointer input. Published also reproduces that initial-color variant. This is not unconditional highlighting acceptance. Signed/DCO `9fdfc2d` uses WinUI's real native Toggle menu action instead of focus-sensitive mouse fallback; the unchanged physical hover/focus/selection and exact foreground assertions remain. Source reopening/50:50 and focus-scroll alignment remain required. Exact-head CI38170170551 is running; no installed or current-head success claim. All source regressions remain in the required focused gate.
KofTwentyTwo commented 2026-10-11 20:31:15 +00:00 (Migrated from github.com)

Current signed head 04c1da8 fixes a diagnostic masking defect: the source-scroll failure reporter queried offscreen native glyph rectangles and threw E_UNEXPECTED before saving numeric focus evidence. It now saves app logs/native tree first, reports the optional observed Win32 failure and preserves the original alignment timeout. Actual geometry bounds, physical click/wheel and bidirectional assertions remain unchanged. Numeric focus and native collapse probes are opt-in and must be removed after diagnosis before release. Prior dbda6d4:96/98 native,94/98 published,17/20 focused; source-focus alignment remains red. Current Windows run: https://github.com/KofTwentyTwo/MarkdownViewr.Windows/actions/runs/38172448726.

Current signed head `04c1da8` fixes a diagnostic masking defect: the source-scroll failure reporter queried offscreen native glyph rectangles and threw E_UNEXPECTED before saving numeric focus evidence. It now saves app logs/native tree first, reports the optional observed Win32 failure and preserves the original alignment timeout. Actual geometry bounds, physical click/wheel and bidirectional assertions remain unchanged. Numeric focus and native collapse probes are opt-in and must be removed after diagnosis before release. Prior dbda6d4:96/98 native,94/98 published,17/20 focused; source-focus alignment remains red. Current Windows run: https://github.com/KofTwentyTwo/MarkdownViewr.Windows/actions/runs/38172448726.
KofTwentyTwo commented 2026-10-11 20:47:36 +00:00 (Migrated from github.com)

Signed/DCO91877f7 is pushed and running at https://github.com/KofTwentyTwo/MarkdownViewr.Windows/actions/runs/38173447118. Focus probes prove the old offscreen-rectangle binary search selects character0 at scrolloffset5297.759. The fix uses actual native visible-text hit-testing before focus; physical click/wheel and exact alignment bounds remain. Nested outline DOM correctly retains child hidden indices; its test awaits the same actual hidden accessibility peer within the existing bound, including theme/reload. Local zero-warning build/format/hooks pass; actual native/distributed proof is pending. Prior04c1da8:18/20 focused,96/98 native,94/98 published,zero skips. Keep this issue open.

Signed/DCO91877f7 is pushed and running at https://github.com/KofTwentyTwo/MarkdownViewr.Windows/actions/runs/38173447118. Focus probes prove the old offscreen-rectangle binary search selects character0 at scrolloffset5297.759. The fix uses actual native visible-text hit-testing before focus; physical click/wheel and exact alignment bounds remain. Nested outline DOM correctly retains child hidden indices; its test awaits the same actual hidden accessibility peer within the existing bound, including theme/reload. Local zero-warning build/format/hooks pass; actual native/distributed proof is pending. Prior04c1da8:18/20 focused,96/98 native,94/98 published,zero skips. Keep this issue open.
KofTwentyTwo commented 2026-10-11 21:34:52 +00:00 (Migrated from github.com)

Signed 9994eda is pushed; exact CI38176727468 is now running native, focused and published/installed acceptance. Previous exact6374611 is terminal: focused19/20, full native97/98 and published97/98, zero skips. Actual sustained colors/physical hover/focus and outline pass both full variants. The remaining source test advances to line490: source middle glyph aligns but the reader heading stays offscreen.

The correction uses full native content-client offscreen character points and stops adding the scroll offset twice. Original physical bidirectional assertions, deadlines and bounds are unchanged. Bounded temporary numeric probes compare anchors/targets; they must be removed before release. Local zero-warning Release, formatting and signed/DCO hooks pass. Hosted proof of the correction and installed acceptance remain pending; no stable1.0/dev publication claim.

Signed `9994eda` is pushed; exact CI38176727468 is now running native, focused and published/installed acceptance. Previous exact6374611 is terminal: focused19/20, full native97/98 and published97/98, zero skips. Actual sustained colors/physical hover/focus and outline pass both full variants. The remaining source test advances to line490: source middle glyph aligns but the reader heading stays offscreen. The correction uses full native content-client offscreen character points and stops adding the scroll offset twice. Original physical bidirectional assertions, deadlines and bounds are unchanged. Bounded temporary numeric probes compare anchors/targets; they must be removed before release. Local zero-warning Release, formatting and signed/DCO hooks pass. Hosted proof of the correction and installed acceptance remain pending; no stable1.0/dev publication claim.
KofTwentyTwo commented 2026-10-11 21:41:42 +00:00 (Migrated from github.com)

Exact9994eda focused hosted suite passes20/20, zero failures/skips, including the original actual source-focus, both-direction heading alignment and physical wheel test. Real TRX is retained under artifacts/reader-regressions-38176727468. Full native and published/installed jobs remain live; no broad installed acceptance claim yet. Temporary probe cleanup is prepared locally and will require clean exact-head verification before release.

Exact9994eda focused hosted suite passes20/20, zero failures/skips, including the original actual source-focus, both-direction heading alignment and physical wheel test. Real TRX is retained under artifacts/reader-regressions-38176727468. Full native and published/installed jobs remain live; no broad installed acceptance claim yet. Temporary probe cleanup is prepared locally and will require clean exact-head verification before release.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/MarkdownViewr.Windows#17