feat(navigation): add document outline and section controls #9

Open
opened 2026-10-11 02:03:09 +00:00 by KofTwentyTwo · 5 comments
KofTwentyTwo commented 2026-10-11 02:03:09 +00:00 (Migrated from github.com)

Add a persistent resizable native table of contents with heading-depth choices, exact document jumps, and section collapse/expansion. Keep authored scripts, web messages, host objects and network access disabled.

Acceptance:

  • Sanitized heading labels, stable host-generated identifiers, correct hierarchy, duplicate/nested headings and malicious markup tested in core with 100% coverage.
  • Depth and visibility preferences persist; sidebar can be resized.
  • Actual browser heading jumps and collapsed/expanded contents verified in hosted native and installed UI tests.
  • Preserve the full source/find/vim navigation scope in #1; this issue covers the outline and section operations only.

Substantial implementation assistance: Codex (GPT-6).

Add a persistent resizable native table of contents with heading-depth choices, exact document jumps, and section collapse/expansion. Keep authored scripts, web messages, host objects and network access disabled. Acceptance: - Sanitized heading labels, stable host-generated identifiers, correct hierarchy, duplicate/nested headings and malicious markup tested in core with 100% coverage. - Depth and visibility preferences persist; sidebar can be resized. - Actual browser heading jumps and collapsed/expanded contents verified in hosted native and installed UI tests. - Preserve the full source/find/vim navigation scope in #1; this issue covers the outline and section operations only. Substantial implementation assistance: Codex (GPT-6).
KofTwentyTwo commented 2026-10-11 02:15:19 +00:00 (Migrated from github.com)

Local milestone implements sanitized headings, GFM local-fragment mapping, unique generated targets, stack-free hierarchical sections, persistent native visibility/depth/drag width, actual browser jumps, independent nested collapse and matching-hierarchy state preservation over theme/reload.

161 core tests/100% coverage and a zero-warning build pass. Added hosted acceptance for physical divider resizing, depth filtering, actual browser scroll, section content removal/restoration and nested/theme/reload state. No local GUI input was run. Hosted verification remains pending; source pane/find/vim and other full-port features remain in #1.

Local milestone implements sanitized headings, GFM local-fragment mapping, unique generated targets, stack-free hierarchical sections, persistent native visibility/depth/drag width, actual browser jumps, independent nested collapse and matching-hierarchy state preservation over theme/reload. 161 core tests/100% coverage and a zero-warning build pass. Added hosted acceptance for physical divider resizing, depth filtering, actual browser scroll, section content removal/restoration and nested/theme/reload state. No local GUI input was run. Hosted verification remains pending; source pane/find/vim and other full-port features remain in #1.
KofTwentyTwo commented 2026-10-11 02:32:49 +00:00 (Migrated from github.com)

Latest pointer acceptance on 443b492 remains 31/33: actual heading jumps and nested/theme/reload collapse pass, but mode switching and physical resize still fail. Exact-target/descendant verification proves the pointer was on an enabled Markdown menu item; saved mode stays Metadata. Original mode/table/resize assertions and timeouts are intact; this is not a table-cache false positive.

Signed/pushed d59dba2c96 settles mouse-down before release, and start/down/move/up separately for the actual drag. Resize timeout now includes saved settings/rectangle/pointer/UIA tree. Zero-warning build, format/docs/hooks pass; no local GUI input. Prior CI/CodeQL producers ended before push. Observe the new head's hosted checks; do not claim these two cases fixed until they pass. Analyzer mitigation is independently verified (scripts 38104988748 SUCCESS, all 13 files plus 55 Pester tests).

Latest pointer acceptance on 443b492 remains 31/33: actual heading jumps and nested/theme/reload collapse pass, but mode switching and physical resize still fail. Exact-target/descendant verification proves the pointer was on an enabled Markdown menu item; saved mode stays Metadata. Original mode/table/resize assertions and timeouts are intact; this is not a table-cache false positive. Signed/pushed d59dba2c96d126730f491720fd548c43c30dd97b settles mouse-down before release, and start/down/move/up separately for the actual drag. Resize timeout now includes saved settings/rectangle/pointer/UIA tree. Zero-warning build, format/docs/hooks pass; no local GUI input. Prior CI/CodeQL producers ended before push. Observe the new head's hosted checks; do not claim these two cases fixed until they pass. Analyzer mitigation is independently verified (scripts 38104988748 SUCCESS, all 13 files plus 55 Pester tests).
KofTwentyTwo commented 2026-10-11 02:53:08 +00:00 (Migrated from github.com)

Previous d59dba2 CI 38105483808 is terminal: 31/33 loose native/UI pass, with the same Markdown frontmatter selection and physical outline resize failures; installed producer also failed. CodeQL/security/scripts/build/format passed. Exact pointer hit verification succeeded, but processing down/up separately did not change the saved mode/width. No assertion was weakened or run retried.

Signed/pushed 9ff820f adds opt-in fixture-only native pressed/released/capture-lost, outline drag and frontmatter click traces, to distinguish event delivery from control-handler behavior. It records no document text or keys and does not change routing, focus or capture. Exact new producer: CI 38106466328. No local desktop input. Acceptance remains open.

Previous d59dba2 CI 38105483808 is terminal: 31/33 loose native/UI pass, with the same Markdown frontmatter selection and physical outline resize failures; installed producer also failed. CodeQL/security/scripts/build/format passed. Exact pointer hit verification succeeded, but processing down/up separately did not change the saved mode/width. No assertion was weakened or run retried. Signed/pushed 9ff820f adds opt-in fixture-only native pressed/released/capture-lost, outline drag and frontmatter click traces, to distinguish event delivery from control-handler behavior. It records no document text or keys and does not change routing, focus or capture. Exact new producer: CI 38106466328. No local desktop input. Acceptance remains open.
KofTwentyTwo commented 2026-10-11 03:01:43 +00:00 (Migrated from github.com)

Signed/pushed 4bf0b81b85 with zero-warning build/format/docs/hooks passed. Exact current CI 38106991467 and CodeQL 38106991641 are running; no local physical input.

Prior 9ff820f CI 38106466328 finished: 31/34 loose and 31/34 published UI, no skips. Build/format/CodeQL/scripts/security passed. Installed channels were not reached. Captured native events narrow the failures:

  • Markdown frontmatter receives a handled press and unhandled release, but no click.
  • Outline starts and completes its real drag, but no movement delta appears.
  • The native source element is absent from accessibility traversal after WebView2.

The follow-up injects actual Windows MOVE input through existing FlaUI APIs instead of SetCursorPos-only movement, and declares source controls before WebView2 without changing their visual columns. Mode/table/exact-target/70-pixel resize assertions stay intact; source acceptance also tests a real divider drag. New entered/exited/moved traces retain evidence if another failure remains. This is an implementation correction awaiting proof, not a passed-acceptance claim.

Full source synchronization/find/vim and PRODUCT.md scope remain active; PR #3 remains draft. No merge/tag/release/Azure retries.

Signed/pushed 4bf0b81b85e99a9f583c5e60b7276e49b423b114 with zero-warning build/format/docs/hooks passed. Exact current CI 38106991467 and CodeQL 38106991641 are running; no local physical input. Prior 9ff820f CI 38106466328 finished: 31/34 loose and 31/34 published UI, no skips. Build/format/CodeQL/scripts/security passed. Installed channels were not reached. Captured native events narrow the failures: - Markdown frontmatter receives a handled press and unhandled release, but no click. - Outline starts and completes its real drag, but no movement delta appears. - The native source element is absent from accessibility traversal after WebView2. The follow-up injects actual Windows MOVE input through existing FlaUI APIs instead of SetCursorPos-only movement, and declares source controls before WebView2 without changing their visual columns. Mode/table/exact-target/70-pixel resize assertions stay intact; source acceptance also tests a real divider drag. New entered/exited/moved traces retain evidence if another failure remains. This is an implementation correction awaiting proof, not a passed-acceptance claim. Full source synchronization/find/vim and PRODUCT.md scope remain active; PR #3 remains draft. No merge/tag/release/Azure retries.
KofTwentyTwo commented 2026-10-11 03:35:05 +00:00 (Migrated from github.com)

Scoped acceptance is now verified on signed 4bf0b81b85: CI 38106991467 fully SUCCESS. Exact TRX: loose native/UI 34/34, published 34/34, installed stable/dev 33/33 each; no skips. Actual frontmatter mode changes, outline visibility/depth/physical resize, browser heading/nested collapse/theme/reload behavior and literal-source/read-only/reload/physical resize all pass. CodeQL/scripts/security also pass. Artifacts retained in artifacts/native-move-installed-38106991467.

The pointer fix used real SendInput MOVE events rather than cursor-only warping; native source declaration ordering follows the verified browser-provider ordering fix. Original outcome assertions remain. PR #3 now closes #8/#9 on reviewed merge; neither is closed early. Full source synchronization/find/vim scope remains in #10/#1. Unsigned fixture success is not production signing evidence.

Scoped acceptance is now verified on signed 4bf0b81b85e99a9f583c5e60b7276e49b423b114: CI 38106991467 fully SUCCESS. Exact TRX: loose native/UI 34/34, published 34/34, installed stable/dev 33/33 each; no skips. Actual frontmatter mode changes, outline visibility/depth/physical resize, browser heading/nested collapse/theme/reload behavior and literal-source/read-only/reload/physical resize all pass. CodeQL/scripts/security also pass. Artifacts retained in artifacts/native-move-installed-38106991467. The pointer fix used real SendInput MOVE events rather than cursor-only warping; native source declaration ordering follows the verified browser-provider ordering fix. Original outcome assertions remain. PR #3 now closes #8/#9 on reviewed merge; neither is closed early. Full source synchronization/find/vim scope remains in #10/#1. Unsigned fixture success is not production signing evidence.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/MarkdownViewr.Windows#9