Implement PRODUCT.md's configured external editor with safe literal file arguments, adapting the pinned reference's deliberate application launch to Windows.
Acceptance:
Choose an installed Windows editor, persist the choice through AppKit settings, and expose deliberate native document launch.
Require a fully qualified executable/document path, use ProcessStartInfo.ArgumentList with UseShellExecute=false, and never concatenate a shell command or derive an executable from Markdown.
Report missing/uninstalled editor and launch failures without logging document content.
Add actual hosted fixture-process/UI acceptance and retain existing reader/update regressions.
Audit reference editor list selection/reordering/removal and folder opening before claiming full parity. No production release or merge is included.
Tracked by #1 and draft PR #3. Substantial implementation assistance by Codex (GPT-6).
Implement PRODUCT.md's configured external editor with safe literal file arguments, adapting the pinned reference's deliberate application launch to Windows.
Acceptance:
- Choose an installed Windows editor, persist the choice through AppKit settings, and expose deliberate native document launch.
- Require a fully qualified executable/document path, use ProcessStartInfo.ArgumentList with UseShellExecute=false, and never concatenate a shell command or derive an executable from Markdown.
- Report missing/uninstalled editor and launch failures without logging document content.
- Exercise names containing spaces, quotes/metacharacters and non-ASCII characters; retain exact literal arguments.
- Add actual hosted fixture-process/UI acceptance and retain existing reader/update regressions.
- Audit reference editor list selection/reordering/removal and folder opening before claiming full parity. No production release or merge is included.
Tracked by #1 and draft PR #3. Substantial implementation assistance by Codex (GPT-6).
Signed keyboard head 2292603569 is pushed. Root-accelerator 7d7c712 CI 38109196556 is terminal at 36/38 native/published; same Ctrl+F timeout and now a fragment exact-pointer-hit assertion. The new adapter is scoped to this foreground window and current UI thread, queues only the native find command, forwards other messages and unregisters on closure. Owned focus/hit/screenshot diagnostics retain the physical assertions.
Observe exact CI 38109719180 and CodeQL 38109719207; scripts 38109718804/security 38109719182/PR gates 38109719194 passed. No local GUI input, merge or release.
Issue #11 now tracks the configured-editor requirement. Separate local editor code has 195 core tests/100% lines and zero-warning build/format/docs validation. Three new hosted actual fixture-process/validation/missing-editor tests are prepared. That increment is not pushed while the current producer is live. Full PRODUCT.md scope remains active.
Signed keyboard head 2292603569d5a78b214933e185842f6cf233010f is pushed. Root-accelerator 7d7c712 CI 38109196556 is terminal at 36/38 native/published; same Ctrl+F timeout and now a fragment exact-pointer-hit assertion. The new adapter is scoped to this foreground window and current UI thread, queues only the native find command, forwards other messages and unregisters on closure. Owned focus/hit/screenshot diagnostics retain the physical assertions.
Observe exact CI 38109719180 and CodeQL 38109719207; scripts 38109718804/security 38109719182/PR gates 38109719194 passed. No local GUI input, merge or release.
Issue #11 now tracks the configured-editor requirement. Separate local editor code has 195 core tests/100% lines and zero-warning build/format/docs validation. Three new hosted actual fixture-process/validation/missing-editor tests are prepared. That increment is not pushed while the current producer is live. Full PRODUCT.md scope remains active.
Signed/DCO head 9edd982e41 is pushed with configured editor commit 574b574 and the composed-browser hit correction. Local 195 core tests/100% lines, zero-warning build, formatting, changed-doc lint and hooks pass. Current exact runs: CI 38110140930, CodeQL 38110140899, scripts 38110140480, security 38110140895; PR gates 38110140931 passed. Observe these producers; native/published 41-test and both installed-channel acceptance remain pending.
Previous 2292603 CI 38109719180 is terminal: native/published 37/38, no skips. Physical browser-focus Ctrl+F, actual source selections, wrap/viewport/reload/collapse pass. Remaining link diagnostic proved ElementFromPoint returned owned DocumentView despite the pointer inside the exact hyperlink bounds. The corrected fixture requires exact link bounds and its owned provider, retains physical Down/Up, and still requires the actual hidden heading/body to become visible. Installed channels were not reached in that producer.
Configured editor receives one literal ArgumentList file value with UseShellExecute=false; native Save/Cancel/open, missing editor/document handling and actual fixture-process UI tests are included. Full editor-list/folder parity remains #11. Source sync/collapse and vim remain #10. Full PRODUCT.md scope remains active, with PR #3 draft and current-head human review/actual production signing still required. No local GUI input, merge/tag/release or Azure attempt.
Signed/DCO head 9edd982e4111ec6d5e585e04725c82e39279cb39 is pushed with configured editor commit 574b574 and the composed-browser hit correction. Local 195 core tests/100% lines, zero-warning build, formatting, changed-doc lint and hooks pass. Current exact runs: CI 38110140930, CodeQL 38110140899, scripts 38110140480, security 38110140895; PR gates 38110140931 passed. Observe these producers; native/published 41-test and both installed-channel acceptance remain pending.
Previous 2292603 CI 38109719180 is terminal: native/published 37/38, no skips. Physical browser-focus Ctrl+F, actual source selections, wrap/viewport/reload/collapse pass. Remaining link diagnostic proved ElementFromPoint returned owned DocumentView despite the pointer inside the exact hyperlink bounds. The corrected fixture requires exact link bounds and its owned provider, retains physical Down/Up, and still requires the actual hidden heading/body to become visible. Installed channels were not reached in that producer.
Configured editor receives one literal ArgumentList file value with UseShellExecute=false; native Save/Cancel/open, missing editor/document handling and actual fixture-process UI tests are included. Full editor-list/folder parity remains #11. Source sync/collapse and vim remain #10. Full PRODUCT.md scope remains active, with PR #3 draft and current-head human review/actual production signing still required. No local GUI input, merge/tag/release or Azure attempt.
Configured editor acceptance is verified on 5a9af63 / CI 38110726381: native/published 41/41 and installed stable/dev 40/40 each, zero skips. All three editor cases passed: persisted selection and exact literal Unicode/metacharacter document argument in a real owned fixture process; cancelled choice; missing executable. Retained logs/TRX/JSON/screenshots are in artifacts/fragment-installed-verified-38110726381. Full editor-list selection/reordering/removal and folder-opening reference audit remains pending; keep this issue open. No merge/release.
Configured editor acceptance is verified on 5a9af63 / CI 38110726381: native/published 41/41 and installed stable/dev 40/40 each, zero skips. All three editor cases passed: persisted selection and exact literal Unicode/metacharacter document argument in a real owned fixture process; cancelled choice; missing executable. Retained logs/TRX/JSON/screenshots are in artifacts/fragment-installed-verified-38110726381. Full editor-list selection/reordering/removal and folder-opening reference audit remains pending; keep this issue open. No merge/release.
EditorConfig.swift requires persisted named identities, multiple editors, add/remove, adjacent reordering, per-editor file/folder mode and one chosen editor per deliberate launch. ExternalEditorMenuState has disabled/one named action/multiple-editor submenu states. Reference folder mode passes the document parent folder instead of the file; absence is reported without silently removing user configuration.
Current Windows implementation has only one bounded executable path, literal file ArgumentList and safe missing-editor/document reporting. Actual configured launch/validation/cancel/missing-executable tests passed on 5a9af63. It does not yet provide list/name/add/remove/reorder/folder-mode or multi-editor menu behavior. Existing filename/argument injection controls must be retained.
Next implementation should migrate the existing ExternalEditor path into a single default list entry, preserve stable IDs/order, validate bounded names/list size/executable paths on load, and edit a copied list until Save. Folder mode must supply exactly one canonical parent-folder ArgumentList entry without changing executable selection or granting authored content access. Missing saved executables should be manageable/removable rather than breaking startup. Hosted tests must use an owned fixture executable to inspect actual file versus folder arguments and persisted menu order, plus cancel/removal/invalid/missing-state behavior.
Issue #11 remains open. This audit is not implementation or completed parity. Published AppKit 0.1.0 and the full PRODUCT.md scope remain.
Pinned reference editor audit (6d08bc9d27d7d7b2c2fa95bb282da330b8cf9021)
EditorConfig.swift requires persisted named identities, multiple editors, add/remove, adjacent reordering, per-editor file/folder mode and one chosen editor per deliberate launch. ExternalEditorMenuState has disabled/one named action/multiple-editor submenu states. Reference folder mode passes the document parent folder instead of the file; absence is reported without silently removing user configuration.
Current Windows implementation has only one bounded executable path, literal file ArgumentList and safe missing-editor/document reporting. Actual configured launch/validation/cancel/missing-executable tests passed on 5a9af63. It does not yet provide list/name/add/remove/reorder/folder-mode or multi-editor menu behavior. Existing filename/argument injection controls must be retained.
Next implementation should migrate the existing ExternalEditor path into a single default list entry, preserve stable IDs/order, validate bounded names/list size/executable paths on load, and edit a copied list until Save. Folder mode must supply exactly one canonical parent-folder ArgumentList entry without changing executable selection or granting authored content access. Missing saved executables should be manageable/removable rather than breaking startup. Hosted tests must use an owned fixture executable to inspect actual file versus folder arguments and persisted menu order, plus cancel/removal/invalid/missing-state behavior.
Issue #11 remains open. This audit is not implementation or completed parity. Published AppKit 0.1.0 and the full PRODUCT.md scope remain.
Checkpoint: cleaned2639e2d / CI38121762124 passed49 native/published and48 installed stable/dev, zero failures/skips. Retained actual TRXs at artifacts/source-clean-verified-installed-38121762124. Repeated heading activation, physical bidirectional source/reader positions, named editor-list/file-folder behavior and basic glyph/key/reload zoom pass in all channels. Installed JSON confirms AppKit apply/restart, expected stable0.4.0/dev0.3.0-beta.2 and no before/after check/apply errors; synthetic unsigned fixtures do not prove production signing.
New print implementation28c295f and signed correction41a687d are pushed on draft PR#3. Local363 core/100% measured lines,55 scripts, build/format/hooks pass. First print run passed Windows print-dialog cancel; native/published50/52 reproduce incorrect fixture find IDs and missing expected PDF path. Current correction uses established find IDs and physical filename readback; filtered38124425486 and fullCI38124425924 pending. No PDF output acceptance claim.
Full PRODUCT scope remains active: raw-heading audit, broader zoom/theme/find/collapse and print output/layout/state proof, windows/recents/activation, remaining theme/render/link parity, standards inventory and deferred exact signed artifacts. No merge, tag/release, Azure retry, local GUI input or fabricated human review.
Checkpoint: cleaned2639e2d / CI38121762124 passed49 native/published and48 installed stable/dev, zero failures/skips. Retained actual TRXs at artifacts/source-clean-verified-installed-38121762124. Repeated heading activation, physical bidirectional source/reader positions, named editor-list/file-folder behavior and basic glyph/key/reload zoom pass in all channels. Installed JSON confirms AppKit apply/restart, expected stable0.4.0/dev0.3.0-beta.2 and no before/after check/apply errors; synthetic unsigned fixtures do not prove production signing.
New print implementation28c295f and signed correction41a687d are pushed on draft PR#3. Local363 core/100% measured lines,55 scripts, build/format/hooks pass. First print run passed Windows print-dialog cancel; native/published50/52 reproduce incorrect fixture find IDs and missing expected PDF path. Current correction uses established find IDs and physical filename readback; filtered38124425486 and fullCI38124425924 pending. No PDF output acceptance claim.
Full PRODUCT scope remains active: raw-heading audit, broader zoom/theme/find/collapse and print output/layout/state proof, windows/recents/activation, remaining theme/render/link parity, standards inventory and deferred exact signed artifacts. No merge, tag/release, Azure retry, local GUI input or fabricated human review.
Related toolbar work (#18) adds checked, merged editor saves and a native broadcast to every open reader's menu/toolbar and saved preference baseline. Cancellation does not save; failed persistence does not apply the draft. A later sibling source preference save cannot resurrect an earlier editor list. Toolbar launch keeps the existing literal argument and file/folder boundary, using stable editor identity for both direct and multiple-choice actions.
New actual acceptance is prepared for real probe-process file/folder arguments, direct launch after removal, and a sibling editor launch followed by its own local preference save. These cases compile/discover but have not run. Zero-warning Release build and format pass; core remains at the measured538 passing tests/100% lines. Current work is uncommitted/unpushed pending the existing1Password signing authentication reply. Earlier editor acceptance remains historical evidence; it does not prove this new broadcast/toolbar behavior.
Substantial AI assistance: Codex (GPT-6).
Related toolbar work (#18) adds checked, merged editor saves and a native broadcast to every open reader's menu/toolbar and saved preference baseline. Cancellation does not save; failed persistence does not apply the draft. A later sibling source preference save cannot resurrect an earlier editor list. Toolbar launch keeps the existing literal argument and file/folder boundary, using stable editor identity for both direct and multiple-choice actions.
New actual acceptance is prepared for real probe-process file/folder arguments, direct launch after removal, and a sibling editor launch followed by its own local preference save. These cases compile/discover but have not run. Zero-warning Release build and format pass; core remains at the measured538 passing tests/100% lines. Current work is uncommitted/unpushed pending the existing1Password signing authentication reply. Earlier editor acceptance remains historical evidence; it does not prove this new broadcast/toolbar behavior.
Substantial AI assistance: Codex (GPT-6).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implement PRODUCT.md's configured external editor with safe literal file arguments, adapting the pinned reference's deliberate application launch to Windows.
Acceptance:
Tracked by #1 and draft PR #3. Substantial implementation assistance by Codex (GPT-6).
Signed keyboard head
2292603569is pushed. Root-accelerator7d7c712CI 38109196556 is terminal at 36/38 native/published; same Ctrl+F timeout and now a fragment exact-pointer-hit assertion. The new adapter is scoped to this foreground window and current UI thread, queues only the native find command, forwards other messages and unregisters on closure. Owned focus/hit/screenshot diagnostics retain the physical assertions.Observe exact CI 38109719180 and CodeQL 38109719207; scripts 38109718804/security 38109719182/PR gates 38109719194 passed. No local GUI input, merge or release.
Issue #11 now tracks the configured-editor requirement. Separate local editor code has 195 core tests/100% lines and zero-warning build/format/docs validation. Three new hosted actual fixture-process/validation/missing-editor tests are prepared. That increment is not pushed while the current producer is live. Full PRODUCT.md scope remains active.
Signed/DCO head
9edd982e41is pushed with configured editor commit574b574and the composed-browser hit correction. Local 195 core tests/100% lines, zero-warning build, formatting, changed-doc lint and hooks pass. Current exact runs: CI 38110140930, CodeQL 38110140899, scripts 38110140480, security 38110140895; PR gates 38110140931 passed. Observe these producers; native/published 41-test and both installed-channel acceptance remain pending.Previous
2292603CI 38109719180 is terminal: native/published 37/38, no skips. Physical browser-focus Ctrl+F, actual source selections, wrap/viewport/reload/collapse pass. Remaining link diagnostic proved ElementFromPoint returned owned DocumentView despite the pointer inside the exact hyperlink bounds. The corrected fixture requires exact link bounds and its owned provider, retains physical Down/Up, and still requires the actual hidden heading/body to become visible. Installed channels were not reached in that producer.Configured editor receives one literal ArgumentList file value with UseShellExecute=false; native Save/Cancel/open, missing editor/document handling and actual fixture-process UI tests are included. Full editor-list/folder parity remains #11. Source sync/collapse and vim remain #10. Full PRODUCT.md scope remains active, with PR #3 draft and current-head human review/actual production signing still required. No local GUI input, merge/tag/release or Azure attempt.
Configured editor acceptance is verified on
5a9af63/ CI 38110726381: native/published 41/41 and installed stable/dev 40/40 each, zero skips. All three editor cases passed: persisted selection and exact literal Unicode/metacharacter document argument in a real owned fixture process; cancelled choice; missing executable. Retained logs/TRX/JSON/screenshots are in artifacts/fragment-installed-verified-38110726381. Full editor-list selection/reordering/removal and folder-opening reference audit remains pending; keep this issue open. No merge/release.Pinned reference editor audit (6d08bc9d27d7d7b2c2fa95bb282da330b8cf9021)
EditorConfig.swift requires persisted named identities, multiple editors, add/remove, adjacent reordering, per-editor file/folder mode and one chosen editor per deliberate launch. ExternalEditorMenuState has disabled/one named action/multiple-editor submenu states. Reference folder mode passes the document parent folder instead of the file; absence is reported without silently removing user configuration.
Current Windows implementation has only one bounded executable path, literal file ArgumentList and safe missing-editor/document reporting. Actual configured launch/validation/cancel/missing-executable tests passed on
5a9af63. It does not yet provide list/name/add/remove/reorder/folder-mode or multi-editor menu behavior. Existing filename/argument injection controls must be retained.Next implementation should migrate the existing ExternalEditor path into a single default list entry, preserve stable IDs/order, validate bounded names/list size/executable paths on load, and edit a copied list until Save. Folder mode must supply exactly one canonical parent-folder ArgumentList entry without changing executable selection or granting authored content access. Missing saved executables should be manageable/removable rather than breaking startup. Hosted tests must use an owned fixture executable to inspect actual file versus folder arguments and persisted menu order, plus cancel/removal/invalid/missing-state behavior.
Issue #11 remains open. This audit is not implementation or completed parity. Published AppKit 0.1.0 and the full PRODUCT.md scope remain.
Checkpoint: cleaned2639e2d / CI38121762124 passed49 native/published and48 installed stable/dev, zero failures/skips. Retained actual TRXs at artifacts/source-clean-verified-installed-38121762124. Repeated heading activation, physical bidirectional source/reader positions, named editor-list/file-folder behavior and basic glyph/key/reload zoom pass in all channels. Installed JSON confirms AppKit apply/restart, expected stable0.4.0/dev0.3.0-beta.2 and no before/after check/apply errors; synthetic unsigned fixtures do not prove production signing.
New print implementation28c295f and signed correction41a687d are pushed on draft PR#3. Local363 core/100% measured lines,55 scripts, build/format/hooks pass. First print run passed Windows print-dialog cancel; native/published50/52 reproduce incorrect fixture find IDs and missing expected PDF path. Current correction uses established find IDs and physical filename readback; filtered38124425486 and fullCI38124425924 pending. No PDF output acceptance claim.
Full PRODUCT scope remains active: raw-heading audit, broader zoom/theme/find/collapse and print output/layout/state proof, windows/recents/activation, remaining theme/render/link parity, standards inventory and deferred exact signed artifacts. No merge, tag/release, Azure retry, local GUI input or fabricated human review.
Related toolbar work (#18) adds checked, merged editor saves and a native broadcast to every open reader's menu/toolbar and saved preference baseline. Cancellation does not save; failed persistence does not apply the draft. A later sibling source preference save cannot resurrect an earlier editor list. Toolbar launch keeps the existing literal argument and file/folder boundary, using stable editor identity for both direct and multiple-choice actions.
New actual acceptance is prepared for real probe-process file/folder arguments, direct launch after removal, and a sibling editor launch followed by its own local preference save. These cases compile/discover but have not run. Zero-warning Release build and format pass; core remains at the measured538 passing tests/100% lines. Current work is uncommitted/unpushed pending the existing1Password signing authentication reply. Earlier editor acceptance remains historical evidence; it does not prove this new broadcast/toolbar behavior.
Substantial AI assistance: Codex (GPT-6).