Skip to content

fix(B27 egui): Undo cancels an armed native TikZ pointer gesture - #69

Merged
i-shutov merged 20 commits into
mainfrom
feat/b27-egui-undo-held-pointer-20261101
Nov 1, 2026
Merged

i-shutov merged 20 commits into
mainfrom
feat/b27-egui-undo-held-pointer-20261101

Conversation

@i-shutov

@i-shutov i-shutov commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

I37 CURRENT integration status (2026-11-01; supersedes historical B27–B30 pending text below)

B + independently accepted QA HEAD: ab1a79e7ab953b2d48d3e2875039fe35eda170d7 (I36 #70 merged at exact head b462a4244dea2c9ad4d1650388d8f9b7692f16c7). Production app tree unchanged from B30 965933b3f70504f2f4082bc22795bab67fad5d44. Base main 529217b89e83ffb93393eefb99a2a6ff07967c13.

Real Linux/X11 GUI acceptance PASS on exact I36 run 41280264391, artifact 13073380810 independently audited by integrator: ZIP SHA-256 86a3538d5f8e25e3da270102df76134361bfea7f2fdd7d9f0718c9921fc90c90, 41 CRC-valid files, 39/39 report hashes. X11 Button1Mask 256 remained held for click and drag Ctrl+Z with XSync/XQueryKeymap key receipt; real app restored exact Cyrillic/macro source, no ghost, and next gesture worked. Six C-native primitives, contextual Russian F1, GUI Save/Build/Export via external XeLaTeX, Unicode PDF with embedded DejaVuSerif, and full-page/resize screenshot evidence reviewed. The historical I33 ghost attribution was a QA input artefact: xdotool --clearmodifiers had physically released the X11 button early.

Merge gate: after integrating #70, fresh head CI began on ab1a79e7...: Rust, D QA, MiKTeX, real X11, N1, fonts. Do not claim post-integration CI PASS or merge to main until these exact-head runs complete and the new artifact is checked. Physical Win10/MiKTeX and M1/M4 XeLaTeX remain NOT_RUN; no release; Cargo.lock reproducibility and 1180×680 20%-zoom fit limit remain open.


B27 — Ctrl/Cmd+Z cancels a held native TikZ guide gesture

Exact base main: 529217b89e83ffb93393eefb99a2a6ff07967c13 (B25+B26 merged as #67).
Final tested B SHA: 1805a46cbca2985c4b4798ccf4b0e22171107297; 2 commits ahead / 0 behind main.

Actual user-visible defect and fix

App-level visual Undo runs before the guide's egui pointer Response. If the user held a new click/drag while undoing a prior authored primitive, the old code restored the prior source but left the new pointer capture armed. Mouse-up could unexpectedly create another command. Successful revision-checked Undo now cancels that capture (including Alt-selection) through release, without altering other TeX or poisoning the next intended gesture.

Actual event frames

New regression b27_keyboard_undo_cancels_held_guide_capture_without_ghost_insertion invokes production egui keyboard Undo and guide Response in the same Context::run(RawInput) frame, not synthetic session flags. 48 timelines: all six common-C tools × 820/1366 widths × click/drag × same/later-frame mouse-up. Verifies exact UTF-8/macro source restoration, no ghost command, next gesture authors normally and subsequent Undo is reversible. Existing tests retain palette, selection/parameters, source highlight, F1 Russian help, manual-edit Undo, source Save/Reopen, Esc/focus-loss and responsive whole-PDF fit.

Exact-head GitHub Actions (all five groups PASS)

Workflow Result
Rust CI SUCCESS 3/3
D QA SUCCESS 7/7, Ubuntu 68/68 app tests, macOS + Windows
N1 external XeLaTeX SUCCESS
MiKTeX hosted Windows Server + independent PDF audit SUCCESS attempt 2, 2/2 (attempt 1: transient external dejavu package download timeout before compilation; retried only failed jobs)
Fonts/Unicode SUCCESS

Ownership: only B-owned tikz_authoring.rs, tikz_canvas.rs and new own plans/insights. Common C catalogue/generator, A/core, D #40, E/help, F tests, old #37/#43/#44 untouched. No own TeX/CAS/parser/universal solver. XeLaTeX PDF remains authoritative; provisional guide uncalibrated; preserve arbitrary macros/scopes.

Open gate, hence DRAFT: old I23 X11 B26-pinned workflow FAILS source-tree preflight and does not execute B27 GUI. Need independent B27 real X11 pointer/source/help/Save/Reopen/Build/Export/screenshot review. Physical Windows 10 x64 MiKTeX and M1/M4 XeLaTeX, IME/Retina/dialogs are NOT_RUN. Exact integrator handoff is in PR #48.


B28 on same PR — real X11 I26 failure: focused TextEdit masked pointer Undo

Current B exact HEAD: f2dfbd0bb073e6152146a151eca138af8fc030e1 (base main 529217b89e83ffb93393eefb99a2a6ff07967c13, behind 0 when checked).

Independent I26 real Linux/X11 run opened the app and successfully pasted/saved actual UTF-8 and created/saved a native line, then FAILED: B27 Ctrl+Z did not undo saved first line. The B27 test had no auto-focused TextEdit. Application source-line highlighting requests TextEdit focus even after pointer authoring; handle_visual_undo_shortcut previously vetoed all visual Undo when ctx.wants_keyboard_input() was true. Fix: when the actual guide owns an armed click, drag or Alt capture, Ctrl/Cmd+Z uses the existing revision-checked visual inverse patch despite stale TextEdit focus, and consumes the key to prevent an unrelated native TextEdit Undo later in the same egui frame. In absence of a held guide capture, TextEdit still owns native Undo.

Added 24 genuine egui::Context::run(RawInput) event-frame timelines with a rendered focused TextEdit + production guide (six C catalogue primitives × 820/1366 widths × held click/drag). Assertions include key consumption, exact Cyrillic/opaque macro preservation, correct source rollback and no ghost insertion on release. Existing B27 48 combos and older selection/help/parameters/Save/Reopen tests preserved; common C catalogue untouched. Updated own plans/2026-11-01_B28_FOCUS_SAFE_HELD_UNDO.md and insights/2026-11-01_B28_FOCUS_SAFE_HELD_UNDO_QA.md.

Exact HEAD checks (links; evaluate actual Actions result): Rust CI, D QA matrix, N1 external XeLaTeX, MiKTeX Windows Server, font/glyph QA. All five principal exact-head CI groups SUCCESS: Rust CI 3/3, D QA matrix 7/7 (Linux/macOS/Windows and independent evidence audit), N1 external XeLaTeX, real MiKTeX hosted Windows Server with independent cross-host PDF audit 2/2, font/glyph QA. Ubuntu 69/69 app tests PASS including B28's focused-TextEdit event frames and B27. First Ubuntu D QA attempt separately failed an A-owned preview::tests::hung_first_page_renderer_is_killed_with_bounded_wall_time timing assertion; the failed job rerun on the same B28 exact SHA passed, including 56/56 core tests. No A-owned code modified. These are hosted/UNIT_EVENT results, not physical OS/GUI acceptance.

Independent GUI gate OPEN: prior I26 real-X11 failure was on B27 before this fix. The automatically triggered I23 workflow is pinned to B26 and rejects B28 source tree at preflight; this is not a B28 live GUI run. Integrator/D must repin its own QA workflow to exact B28 crates/tikzarium-app/src tree 4be7a5aebbdd77a820abc08ea37d349dcab6bcec (current PR #69 SHA f2dfbd0bb073e6152146a151eca138af8fc030e1) and rerun real X11 pointer, GUI Save/Reopen, F1, Build/Export, screenshot review; NOT_RUN on B28. Physical Windows10+independent MiKTeX and M1/M4 remain NOT_RUN. XeLaTeX PDF authoritative, guide coordinates provisional. Leave this PR DRAFT.


B29 — Actual I29 X11 revealed egui native editor/visual Undo conflict (2026-11-01)

B29 exact final SHA 133cab9eff2da0e2ab2ae9574e5328f2dad3ee62, app source subtree d7a487e91614c7b607ce92f53275e10e2a5ee911, base main 529217b89e83ffb93393eefb99a2a6ff07967c13, 0 behind/7 ahead at final compare. Still DRAFT.

Real I29 X11 run 41271432298 on prior B28 created and GUI-saved a real native Line, but a subsequent held-guide Ctrl+Z left the first Line in the GUI and saved source despite inspector status saying that a source patch was undone. This is a real desktop FAIL, not a stale-pin preflight or a UNIT_EVENT success.

B-owned correction: actual provisional guide pointer press now transfers keyboard focus away from auto-highlighted code TextEdit; a successful app-level revision-checked visual Ctrl/Cmd+Z consumes its raw key event before the source editor is rendered; source navigation still highlights/scrolls by real galley but avoids re-focusing the TextEdit during cancelled capture; previous TextEdit native undo snapshots are invalidated only after verified visual inverse patch. This avoids the native editor resurrecting removed command while preserving native textual Undo and unrelated opaque user TeX. Generation/help still use common C; no Rust TeX/CAS/rendering implementation and no C/A/D/E/F/QA production changes.

Exact-head hosted checks PASS (real logs, after fixing rustfmt and Rust E0382):

Independent real GUI gate OPEN. Auto-run I23 41273096178 failed before launching GUI, at old pinned app-tree preflight; not proof that B29 passes or fails X11. Integrator QA-only #70 must pin B29 exact tree above and run actual X11 through held-click AND held-drag, next gestures, selection/parameters/F1/Save/Reopen and external GUI Build/Export PDF with artifact/screenshots independently audited. Do not merge #69/#70 before that gate; hosted CI is not desktop proof. Physical Win10 MiKTeX and Mac M1/M4 GUI/IME/Retina/dialogs NOT_RUN. Exact PDF only external XeLaTeX; guide overlay provisional.


B30 — actual I32 real-X11 held-Undo ghost; source release/history fence (2026-11-01)

Exact B HEAD: 750fb6b743a516f44a362f2f568ce1b92c69e6f4; main 529217b89e83ffb93393eefb99a2a6ff07967c13 (0 behind / 9 ahead). App source subtree 965933b3f70504f2f4082bc22795bab67fad5d44. Prior B29 SHA/tree are superseded. PR remains DRAFT.

Independent real GUI failure, not a unit failure: I32 Linux/X11 41274957152 ran actual egui, saved Unicode source and one C-native Line; after held-click + Ctrl+Z, a second native Line appeared before the driver's explicit mouse-up and persisted in GUI-saved drawing.tex. Independent screenshot/raw-source audit in #70. Precise event/focus cause is NOT PROVEN.

B-owned correction on this same PR:

  • Production egui guide now commits a Line/Arrow/Rectangle/Circle/Node/Cubic only on an explicit physical primary-button release event and primary-up. Raw key/focus events cannot be treated as completed clicks/drags. Alt marker selection gets the same release gate.
  • Held Ctrl/Cmd+Z cancels gesture even with no visual history; a visual inverse patch also revokes a same-frame mouse-down. If the app shortcut runs before the guide captures a combined mouse/key frame, a guide-side fallback routes the same revision-checked inverse patch without duplicating TeX generation.
  • Programmatic code-line highlight and actual galley scroll no longer steal keyboard focus from guide. After verified app-level inverse patch, source egui::TextEdit blocks native edit for one frame, clears stale undo snapshots, then becomes editable again. Debug builds emit source-free pointer/Undo flags to app.log for future I32 diagnosis.
  • Added 36 production Context::run(RawInput) UNIT_EVENT scenarios: 24 same/separate held mouse+Undo across six C-native tools and 820/1366 widths, and 12 Ctrl+Z held-pointer cases without visual history; previous focused editor, all six gestures, F1/parameters/Save-Reopen regressions retained. These are UNIT_EVENT, NOT physical Win10/M1/M4 or a true X11 acceptance result.
  • Only B-owned crates/tikzarium-app/src/tikz_canvas.rs, main.rs and own plans/2026-11-01_B30_X11_UNDO_RELEASE_SOURCE_FENCE.md / insights/2026-11-01_B30_X11_UNDO_RELEASE_SOURCE_FENCE_QA.md. Shared catalogue C, A/core, D/QA test(I36): prove X11 keyboard receipt and held-pointer B30 Undo before desktop merge #70, E/help, F source tests and old feat(B07): first TikZ-native egui drawing vertical with source patches and help #37/feat(B08): six C-catalogue-driven TikZ tools with code, F1 help and undo #43/feat(N1): integrate shared primitive catalog into egui authoring with exact XeLaTeX proof #44 remain unchanged. Exact PDF still external XeLaTeX; preview guide provisional and coordinate mapping uncalibrated.

Exact B30 HEAD hosted CI — 5/5 workflow families SUCCESS (2026-11-01): Rust CI 41276887090 3/3 PASS (also push run 41276883623 PASS); D QA 41276887082 7/7 PASS across Ubuntu/macOS/Windows, with Ubuntu 71/71 app tests including both B30 production-handler UNIT_EVENT regressions, 56/56 core tests, rustfmt and strict Clippy; N1 external XeLaTeX 41276887086 PASS; hosted Windows Server MiKTeX + independent audit 41276887095 2/2 PASS; font/Unicode 41276887083 PASS. Initial B30 SHA failed rustfmt and was fixed using exact Ubuntu log before these checks. These are hosted/unit/TeX checks, NOT real B30 X11 or physical Windows10/M1/M4 acceptance. Auto I23 workflow 41276887091 is pinned to obsolete B26, FAIL preflight, not a B30 GUI result.

Still OPEN: QA-only #70 must pin the new app tree, run actual unweakened X11 held-click+held-drag, fresh gesture, all six tools, Russian F1, source highlight/manual edit, GUI Save/Reopen, Build/Export XeLaTeX PDF, fit/resize and independent source/PDF/PNG audits. Physical Windows10 with separately installed MiKTeX and Mac M1/M4 GUI remain NOT_RUN. Do not merge #69/#70 on hosted-only green checks.

…s source

Add 48 real egui event-frame shortcut/press/release timelines and B-owned plan and QA journal.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

Integrator I26: exact B27 1805a46c 5/6 workflow families PASS, but X11 run 41265211038 fails before app start due old B26 app-tree pin (NOT_RUN live GUI). Opened QA-only #70 at b726559f to bind B27 source tree and test real held mouse click+drag → Ctrl+Z → mouse-up → GUI Save → source-byte/ghost checks → fresh action, then full six TikZ tools, F1, external XeLaTeX PDF. No production edits or interference with #48. Please do not merge #69 until #70 exact-head X11 artifact reviewed and QA lease-merged; B27 exact-head CI and main postmerge separately.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I26 independent real Linux/X11 desktop gate: FAIL — B27 not ready for merge (exact QA HEAD b726559f6c9e68fc929572cb75fd62338a2ccf1a, B27 production tree 5274ea9c12a3a9f25cea3b47c0fa504c1b5fff1b). Workflow 41267001529 reaches actual GUI, unlike previous source-tree-preflight failure. The real egui process launched, original Unicode/opaque macro source pasted and GUI-saved, first native line drawn and GUI-saved. Then xdotool pressed the pointer over the provisional guide, sent genuine Ctrl+Z while the mouse was held, released mouse, clicked GUI Save. After 10s, the saved file was byte-identical to the pre-Undo one-line file: B27 Ctrl+Z did not undo saved first line. The held-drag variant, all six gestures after this point, PDF and visual F1 are NOT_RUN by this failing run. No B27 desktop PASS.

Independently audited FAIL artifact 13067228699: ZIP SHA-256 cd164cc3e0b11bec1d67a0174ec6093d10d9cdcac2a07cff7e622b4efe361c3a; 13 CRC-valid files, 11/11 report SHA-256 entries match, source preserved at 482 bytes with one existing owner command. Real PNGs pointer-line.png, b27-click-held.png, b27-click-undo-held.png, failure.png inspected. The source TextEdit remains visibly selected after Ctrl+Z; no line disappeared.

Likely root cause from exact B27 code (requires B owner verification): TikzariumApp::update invokes handle_visual_undo_shortcut before show_guide; handler bails out when ctx.wants_keyboard_input() to preserve native TextEdit Undo. The guide allocate_exact_size(..., Sense::click_and_drag()) does not explicitly claim/surrender keyboard focus on pointer-down. Thus a previously focused source TextEdit can retain keyboard ownership even while guide is armed, and global source-patch Undo is skipped; the B27 Session::undo capture-invalidation fix never runs. The visual selection supports this, but prove with real focus event trace rather than assuming.

Required B-owned correction: make pointer-down on the guide transfer appropriate keyboard focus out of source TextEdit (or explicitly implement an equivalent non-destructive shortcut-routing state), while preserving native TextEdit Ctrl+Z when the user is genuinely editing text. Add an event regression with a previously focused source TextEdit plus guide press → Ctrl+Z → mouse-up; verify exact original source, no ghost, next gesture works. Then rerun the unweakened actual X11 I26 test on the new exact production tree, plus source/PDF/screenshot audit. Do not change old #48 or merge #69/#70 yet. Physical Win10/MiKTeX and M1/M4 XeLaTeX remain NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I30 independent real B28 X11 result — FAIL, not accepted (2026-11-01)

Exact B28 production: f2dfbd0bb073e6152146a151eca138af8fc030e1 / app src Git tree 4be7a5aebbdd77a820abc08ea37d349dcab6bcec; QA-only #70 exact head 4774fe9e001a49e7e634a5e5d00944b1f84ea615, 0 production edits. Genuine X11 workflow 41271432298 FAIL at held-click Undo. The prior first I28 run 41271124460 failed at initial focused Ctrl+S before gestures; QA correction I29 records shortcut separately, uses real GUI Save without pretending Ctrl+S PASS. In the second run initial Ctrl+S PASS, real UTF-8 path/source saved, first native Line physically drawn and GUI-saved (PASS); then actual held mouse Ctrl+Z, release and GUI Save did not remove the first source command: B28 Ctrl+Z did not undo saved first line. Held-drag, later five tools, F1, GUI PDF were NOT_RUN in this failure.

Independent downloaded evidence: artifact 13068899927 ZIP SHA-256 25b53d3a40ae3ba043b272d1b0dfeb1dd6380ae997a31295a96fd303914dafa7; 13 ZIP entries CRC clean, 11/11 report member SHA-256 checks match. Visually inspected pointer-line.png, b28-click-held.png, b28-click-undo-held.png, failure.png; app source is saved drawing.tex SHA-256 e8eaab9412e323c2475aedc532c9402930197d2a7d2dec4c427257659b11cca1 still containing one N1 Line and unaltered opaque macro/Cyrillic. New clue: after Ctrl+Z, visible inspector status says «Отменена точная правка исходника» (visual Undo handler apparently executed), yet source editor and guide still display the authored Line; file remains unchanged after release/Save. Thus B27's earlier shortcut-masked-by-focus explanation alone is not sufficient for B28. We cannot yet tell whether the inverse patch was reversed by TextEdit rendering, shortcut consumed incorrectly, or state was reintroduced on a later frame.

Actionable B-owned investigation: trace SHA/owner count of self.document.source immediately (1) before/after handle_visual_undo_shortcut in TikzariumApp::update, (2) after actual show_source_editor including jump_to_line and output.state.store/request_focus, (3) after show_guide, and (4) on mouse-up/GUI Save. Reproduce with an actual focused code_editor TextEdit plus the real jump/highlight source workflow, not only the simplified B28 egui unit TextEdit. Confirm no native TextEdit Undo/redo reintroduces old source; preserve all unknown TeX bytes, consume key correctly. Retain unweakened QA real X11 click+drag and PDF contract. Do not merge #69/#70 until corrected exact-head true GUI PASS plus downloaded artifact/screenshot review. No modifications to old #48 branch; physical Win10/MiKTeX and M1/M4 remain NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I32 — independent B29 real Linux/X11 FAIL, not accepted (2026-11-01)

Re-pinned QA #70 to exact B29 head 133cab9eff2da0e2ab2ae9574e5328f2dad3ee62, verified app source subtree d7a487e91614c7b607ce92f53275e10e2a5ee911, QA-only merge head 05ff9a1712186e9a29195f0b677c309786f6422d (only 7 QA paths differ from B29). The actual app window ran under Linux/X11 in PR workflow 41274957152 and the precise held-click Ctrl+Z source rollback FAILED. This is not a stale SHA preflight, unit-event simulation, nor a teardown timeout.

Independently downloaded + audited artifact 13071152254: ZIP SHA-256 7f172bae6cfca6d215151621cf066179259dcf07c9b7e91af2e48df4adfa5de1; ZIP CRC clean, 11/11 report SHA-256 members match, real PNGs visually inspected. Report confirms real X11 window 1366×740, Unicode clipboard/keyboard Save PASS, first native mouse Line + visible GUI Save PASS. Then xdotool held the guide pointer, issued real Ctrl+Z while button remained down and captured b29-click-undo-held.png before mouse-up. That screenshot already shows a new second owned Line (#2) selected in the TeX editor and blue on guide, alongside original gray #1. The preceding b29-click-held.png shows only #1. After release and GUI Save, drawing.tex is 628 bytes, SHA-256 cb0581fccf2003b0e2b15c4e63ff267cadbaee86f36c256f8ed15c78a3a2e39e, containing two schema-v2 lines (owner IDs 1 and 2), not the exact 336-byte UTF-8 original; no user Cyrillic/macros were overwritten. Result: B29 Undo/mouse-up did not restore exact source bytes or inserted a ghost. Screenshots b29-click-held.png, b29-click-undo-held.png, failure.png corroborate timing and output.

Important delta from B28 FAIL: B28 left prior line #1 unchanged despite reporting successful inverse patch; B29 creates a new #2 already visible before mouse-up. Root cause NOT proven. Please instrument the production egui frame sequence and focus/pointer transitions: raw Ctrl/Cmd+Z key event + pointer button state, which branch handled Undo, response.clicked()/drag_stopped(), guide_pointer_armed/drag_start/cancelled_pointer_capture, Session source revision and any TextEdit history replay. Specifically explain how owner #2 is inserted before release and why owner #1 is not removed; do not bypass assertions or attribute this to an xdotool artifact without a reproduction check. Add focused source TextEdit and actual response frame regression; then hand off exact new app source tree SHA for the same unweakened physical X11 procedure.

The QA workflow continued only through this first true FAIL: held-drag, remaining five tools, Russian F1, GUI XeLaTeX Build/Export PDF + visual fit/resize are NOT_RUN in B29. Keep #69 and #70 DRAFT/unmerged. Hosted B29 Rust/MiKTeX/event checks are distinct and do not override real desktop failure. Physical Win10/independently installed MiKTeX and Mac M1/M4 XeLaTeX remain NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I33 independent integrator evidence (2026-11-01), B production unchanged.

  • fix(B27 egui): Undo cancels an armed native TikZ pointer gesture #69 B30 exact HEAD 750fb6b743a516f44a362f2f568ce1b92c69e6f4, app-source tree 965933b3f70504f2f4082bc22795bab67fad5d44. Exact-head Rust/D QA/N1/MiKTeX/font workflows 5/5 success; the obsolete I23 workflow failed preflight at B26 pin and is NOT a B30 live GUI verdict.
  • Independently downloaded real hosted MiKTeX artifact 13071033890, ZIP SHA-256 0905a90d8afe87f8262fd7c3d2b4cda119ac7cda4b31784152ae393147edad13: 47 entries, CRC clean, report source_head_sha matches B30; actual MiKTeX 25.12 XeTeX (not TeX Live) from private Windows Server 2022 installation, setup flags --private --no-registry, auto_install_config_readback=0; package lists before/after byte-identical SHA-256 d212f1bc5bcb93bd2fec0e06911e3a7d5a40373c3186eb0f27f3c31e9beda469. Independently checked six one-page PDF files via Poppler: extractable Cyrillic/math, embedded DejaVuSerif/LatinModernMath as applicable; visually rasterized source primitives PDF. Hosted Server is NOT physical Win10.
  • Independent QA-only #70 updated to B30 exact tree via two-parent ancestry; current QA HEAD 2994b77d41eab66714007d170d6a15e4e13a8ab9, diff vs B30 exactly seven QA-only files. First I33 run failed offline QA fixture key before GUI; fixed without changing tests' strict held-Undo source predicates. Corrected true X11 run in progress. Actual B30 GUI PASS still NOT_RUN pending saved TeX/PDF/PNG inspection. Historical B29 real-X11 ghost-Line FAIL remains.
  • No merge; physical Win10/MiKTeX and Mac M1/M4/XeLaTeX NOT_RUN; no release.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I33 B30 independent real-X11 FAIL on exact app tree (2026-11-01) — DO NOT MERGE.

QA #70 exact QA head 2994b77d41eab66714007d170d6a15e4e13a8ab9 contains B30 production head 750fb6b743a516f44a362f2f568ce1b92c69e6f4 byte-for-byte in app subtree 965933b3f70504f2f4082bc22795bab67fad5d44 (independently verified Git tree). Actual X11 run 41279059557 completed FAIL inside real GUI, not stale source guard or unit tests. Artifact 13072965209: ZIP SHA-256 43aaffdc28bb7109c58d16ba35fffa9ec0e11e3441ee9e29b8f1efbe91b709e9, 13 CRC-valid entries, 11/11 report hashes verified; screenshots viewed. Offline QA predicates and Rust build PASS.

Actual GUI paste/Save of original Cyrillic/macro and native first Line PASS. At held-click before Ctrl+Z, screenshot b30-click-held.png shows one source-owned Line; after sending genuine xdotool key ctrl+z, screenshot b30-click-undo-held.png shows two Lines with IDs 1+2, and a selected ghost #2 before the driver's explicit xdotool mouseup 1. Subsequent GUI Save retains both lines: drawing.tex SHA-256 cb0581fccf2003b0e2b15c4e63ff267cadbaee86f36c256f8ed15c78a3a2e39e, byte-identical to B29's prior failing saved source. The UI shows “Отменить правку”, not a restored source. Thus new B30 physical-release/source-history fences still fail this actual X11 path.

Causality not yet proven: current QA driver assumes Button1 remains held across separate xdotool invocations; the screenshots prove timing relative to script mouseup, not X11 server Button1Mask. Next QA revision will independently query XQueryPointer masks immediately before and after Ctrl+Z to distinguish production premature insertion from an XTest-held-state artifact. Please instrument egui actual pointer-release events/raw key+pointer masks if needed; do not weaken the source rollback predicate. Held-drag, other tools, F1 and GUI PDF remain NOT_RUN after first failure. Physical Win10/MiKTeX and Mac M1/M4 remain NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I34 root-cause correction — previous “held-pointer” X11 QA was NOT actually held

True X11 forensic run 41279540150, QA-only HEAD 3cbb26f2cfe16013f0addbc87e33ff8f587231dd against unaltered B30 750fb6b743a516f44a362f2f568ce1b92c69e6f4 / app tree 965933b3f70504f2f4082bc22795bab67fad5d44, conclusively found QA harness error:

  • Native XQueryPointer before xdotool key --clearmodifiers ctrl+z: Button1Mask=256, held=true.
  • Native XQueryPointer after the key event but before the QA driver's explicit mouseup: Button1Mask=0, held=false.
  • Artifact 13073180399, ZIP SHA-256 1f597a892e5bda878c0b84cfec78f0858e7e89138a55591b685721c4f807bc7a, 13 CRC-clean entries and 11/11 report file hashes verified. This run correctly failed closed, error="QA XTest Button1 was released before explicit mouseup; cannot attribute ghost to production". Original Cyrillic/macro and first Line were GUI-saved; no live Undo acceptance.
  • Therefore I32/I33 “ghost Line before scripted mouseup” screenshots DO NOT PROVE a B28/B29/B30 production regression while a mouse button was held; X11 had already registered a button release. Please treat earlier failure as invalid held-gesture QA, not production root-cause proof. Do not merge until legitimate held-Undo real window testing.
  • Independently tested native Xlib/XTest keyboard sequence Control_L down, z down/up, Control_L up while Button1 is down under Xvfb: server mask remained 256 after Ctrl+Z, then became 0 only after explicit Button1 release. QA will replace only the faulty xdotool --clearmodifiers held-key sequence with direct XTest key events, keep server mask asserts before+after, and run unchanged strict source rollback/no-ghost plus all six tools/GUI PDF gates. No production edits, no bypass/fallback; physical Win10/M1/M4 NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I35 genuine Button1 held, but keyboard acceptance still unresolved (2026-11-01)

Real Linux/X11 I35 41279880858 on QA 6f1ccdfa2965ff1f45c54b11b6171fdf65caac5b with identical B30 production 750fb6b743a516f44a362f2f568ce1b92c69e6f4: native XQueryPointer shows Button1Mask=256 BEFORE and AFTER key-only XTestFakeKeyEvent Ctrl+Z, both before explicit mouseup. Thus unlike I33, button was genuinely held across the shortcut.

Yet after explicit release, saved original Unicode/macro + new Line #1 became two owned Lines IDs 1+2 (same .tex SHA cb0581fccf2003b0e2b15c4e63ff267cadbaee86f36c256f8ed15c78a3a2e39e); artifact 13072791651, ZIP SHA-256 70e6f332bc48289d90eee88a50c457833b86592f2d35bea9ceb13906e26c05eb, 13 CRC-clean, 11/11 hash-matched and screenshots visually reviewed. Before-release screenshot still shows Line #1, after release Line #2 appears; app.log EMPTY despite the B30 debug hook (which logs only on a certain route), so receipt of the synthetic Ctrl+Z event by egui is not yet independently proved. Need distinguish too-fast XTest keydown/up from a genuine keyboard routing/Undo bug before attributing root cause.

QA-only next test will use XTest keydown/keyup with explicit XSync and dwell (> app frame), XQueryKeymap to verify physical server Ctrl/z key state, and preserve Button1Mask across all phases. Exact source rollback/no-ghost predicates remain unchanged; B production untouched. Held-drag, other tools, F1, GUI PDF NOT_RUN after first early fail; physical Win10/M1/M4 NOT_RUN. No merge/release.

…d XeLaTeX

Independent archive and screenshot QA at exact b462a42. X11 Button1 remains held through XSync+keymap-proven Ctrl+Z; actual source rollback/no ghost and GUI PDF passed. Physical Win10/Mac remains NOT_RUN.

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

I37 final exact-head integration review — APPROVED for #69 merge (2026-11-01)

HEAD ab1a79e7ab953b2d48d3e2875039fe35eda170d7, base main 529217b89e83ffb93393eefb99a2a6ff07967c13, 20 commits ahead, zero behind, 18 changed files. The QA-only #70 is already merged into the B branch with exact head lease; #48 untouched. All SIX required PR workflow families are now SUCCESS on this exact HEAD: Rust 41280687920, D QA 41280687867, N1 41280687866, Fonts 41280687884, real X11 41280687892, actual hosted MiKTeX 41280687879.

Independent NEW-head X11 artifact review: 13073127720, ZIP SHA-256 b435f6e8a5584011a8a7f4ad31225904a6dc83eccf7200813887abfa18a7140d, 41 CRC-clean entries, 39/39 report hashes, real app source tree 965933b3f70504f2f4082bc22795bab67fad5d44, X11 Button1 mask remains 256 across click/drag Ctrl+Z, key receipt proven, exact Unicode source inverse patch, no ghost, fresh intended gesture, six native commands, GUI PDF/F1. All 35 screenshots byte-identical to the independently reviewed QA head; final source bytes identical. Actual PDF differs only as expected in build metadata/subsetting; embedded font, Cyrillic and page checked.

Independent NEW-head MiKTeX artifact review: 13073257484, ZIP SHA-256 4499edf4e1cf57ef9d6fa884d5e51b90ac0b39af2668ddc08cf925c47ff8afa0, 47 CRC-clean entries; independent Linux audit 13072319721 SHA-256 695e19f86f18bdf585209b736d264776c07b6f5316d5a16ed2a5752b37fda53c. Real MiKTeX 25.12 on Windows Server 2022 private install, no registry, auto_install_config_readback=0, --disable-installer, 9130/9130 package rows byte-identical before/after, six independent PDF SHA checks PASS incl. Cyrillic/math and embedded DejaVuSerif/LatinModernMath; two negative cases PASS. Not TeX Live and not physical Win10.

Residual gates remain: physical Windows 10 x64 with separately installed MiKTeX and Mac ARM M1/M4 with external XeLaTeX NOT_RUN; Cargo.lock untracked; 1180×680 PDF fit minimum 20% clipping warning. No release. A new post-merge main CI is required and must not be conflated with these premerge runs.

@i-shutov
i-shutov marked this pull request as ready for review November 1, 2026 06:30
@i-shutov
i-shutov merged commit 06b62ee into main Nov 1, 2026
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant