Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions .github/workflows/n1-desktop-smoke.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
name: I23 real B26 native TikZ and responsive whole-page PDF acceptance
name: I33 real B30 source-history Undo-while-held native TikZ PDF acceptance
on:
push:
branches:
- qa/i23-b25-live-fullpage-x11
- feat/b25-egui-pointer-focus-fit-page-20261101
- feat/b16-egui-live-palette-six-gesture-20261031
- qa/i26-b27-live-undo-x11
- feat/b27-egui-undo-held-pointer-20261101
- main
paths:
- '.github/workflows/n1-desktop-smoke.yml'
Expand All @@ -17,8 +16,7 @@ on:
- 'Cargo.lock'
pull_request:
branches:
- feat/b25-egui-pointer-focus-fit-page-20261101
- feat/b16-egui-live-palette-six-gesture-20261031
- feat/b27-egui-undo-held-pointer-20261101
- main
paths:
- '.github/workflows/n1-desktop-smoke.yml'
Expand All @@ -33,7 +31,7 @@ on:
permissions:
contents: read
concurrency:
group: i23-desktop-${{ github.event.pull_request.head.sha || github.sha }}
group: i33-desktop-${{ github.event.pull_request.head.sha || github.sha }}
cancel-in-progress: true
jobs:
desktop:
Expand All @@ -54,7 +52,7 @@ jobs:
run: |
test "$(git rev-parse HEAD)" = "$TIKZARIUM_SOURCE_SHA"
echo "TIKZARIUM_APP_TREE_SHA=$(git rev-parse HEAD:crates/tikzarium-app/src)" >> "$GITHUB_ENV"
test "$(git rev-parse HEAD:crates/tikzarium-app/src)" = '47c4c86be10471a5f56f7019ad63a77e7f4480f5'
test "$(git rev-parse HEAD:crates/tikzarium-app/src)" = '965933b3f70504f2f4082bc22795bab67fad5d44'
- name: Install isolated hosted GUI and external XeLaTeX prerequisites
run: |
sudo apt-get update -q
Expand All @@ -78,7 +76,7 @@ jobs:
cp Cargo.lock "$RUNNER_TEMP/i19-build-evidence/Cargo.lock"
echo "::warning::Source repository has NO Cargo.lock; generated resolution archived, release reproducibility NOT VERIFIED"
fi
- name: Real B26 X11 gestures, GUI Save, XeLaTeX PDF, Fit page and resize
- name: Real B30 X11 source-history held-pointer Undo, six gestures, GUI Save/XeLaTeX, fit/resize
run: |
mkdir -p "$RUNNER_TEMP/i19-runtime"
chmod 700 "$RUNNER_TEMP/i19-runtime"
Expand All @@ -89,7 +87,7 @@ jobs:
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: i23-b26-desktop-${{ env.TIKZARIUM_SOURCE_SHA }}
name: i33-b30-desktop-${{ env.TIKZARIUM_SOURCE_SHA }}
path: |
${{ runner.temp }}/i19-evidence/*.json
${{ runner.temp }}/i19-evidence/*.png
Expand Down
36 changes: 36 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
# Changelog

## Unreleased — I36 B30 X11 held-button AND keyboard receipt desktop acceptance (NOT_RUN pending artifacts)

- I35 [actual Linux/X11 41279880858](https://github.com/i-shutov/tikzarium/actions/runs/41279880858) held **Button1Mask=256** across key-only XTest Ctrl+Z but source Undo still failed and later release inserted Line #2. I36 adds 80ms XTest key dwell/XSync, native XQueryKeymap proof of Ctrl/z down/up, XGetInputFocus snapshot, server Button1Mask check each key step, preserving strict source rollback. This disambiguates too-fast synthetic key events from B30 production routing. QA-only; actual I36 GUI acceptance NOT_RUN until complete, physical OS NOT_RUN, no release.

## Unreleased — I35 B30 true XTest held Ctrl+Z and GUI acceptance (HISTORICAL FAIL)

- [I34 real X11 41279540150](https://github.com/i-shutov/tikzarium/actions/runs/41279540150) correctly failed closed: X11 Button1Mask **256→0** across `xdotool key --clearmodifiers` before QA mouseup, so old “held” ghost tests used invalid input. I35 replaces that key with genuine XTestFakeKeyEvent key-only Ctrl+Z, demonstrated under isolated Xvfb to preserve Button1Mask=256, and keeps server mask/byte-exact/no-ghost tests. No B production edits; actual I35 acceptance and physical Win10/M1/M4 NOT_RUN, no merge/release.

## Unreleased — I34 B30 real held-pointer XQueryPointer forensic acceptance (QA_HARNESS FAIL)

- I33 actual [X11 41279059557](https://github.com/i-shutov/tikzarium/actions/runs/41279059557) **FAIL**: before explicit driver mouseup, Ctrl+Z screenshot reveals ghost Line #2; saved .tex contains Line IDs 1+2, matching previous B29 source SHA exactly. QA now queries actual X11 Button1Mask before/after key to distinguish XTest-button release from application early insertion. Fail closed on absent held button; source-rollback assertions unchanged. B30 production and C catalogue untouched, physical Win10/M1/M4 NOT_RUN; no release.

## Unreleased — I33 B30 real X11 pointer Undo QA (historical FAIL)

- First exact B30 QA [41278805656](https://github.com/i-shutov/tikzarium/actions/runs/41278805656) failed **offline fixture-key consistency** before launching the executable; corrected the test reference to the unchanged B30 fixture marker. This is a QA preflight correction, **not** a real GUI FAIL/PASS; strict live test unchanged.

- QA-only integration at B30 #69 exact `750fb6b743a516f44a362f2f568ce1b92c69e6f4` and source tree `965933b3f70504f2f4082bc22795bab67fad5d44`; real X11 six-tool/held-click and held-drag Undo, exact source restoration without ghosts, Russian F1, GUI XeLaTeX PDF, fit/resize screenshot evidence. Historical B29 GUI [41274957152](https://github.com/i-shutov/tikzarium/actions/runs/41274957152) FAIL. B30 hosted CI 5/5 workflow families PASS does not prove actual GUI; B30 X11 NOT_RUN at commit. Physical Win10/MiKTeX and M1/M4 XeLaTeX NOT_RUN; no release.

## Unreleased — I31 B29 source-history actual GUI re-acceptance (NOT_RUN)

- Independently pinned QA source to B29 draft PR #69 HEAD `133cab9eff2da0e2ab2ae9574e5328f2dad3ee62`, app tree `d7a487e91614c7b607ce92f53275e10e2a5ee911`. Previous B28 real X11 [41271432298](https://github.com/i-shutov/tikzarium/actions/runs/41271432298) failed despite apparent Undo success. Re-run real held-click and held-drag Undo plus 6 native tools, GUI Save/Build/Export and F1/PDF screenshot audit without weakening test predicates; no B production changes, old #48 untouched. Hosted B29 CI does not replace actual X11; physical Win10/Mac NOT_RUN. No release.

## Unreleased — I29 B28 X11 initial source-save gate: explicit GUI Save (pending rerun)

- [I28 run 41271124460](https://github.com/i-shutov/tikzarium/actions/runs/41271124460) failed before held-pointer tests: actual source editor displayed original Unicode and path but Ctrl+S did not persist the file. Real pointer/PDF NOT_RUN. QA now records shortcut failure separately and uses the visible GUI Save button to test the required source-persistence vertical; no TeX is fabricated and shortcut is not called PASS. Corrected exact-head CI/visual evidence pending.

## Unreleased — I28 B28 focus-safe pointer Undo real X11 gate (NOT_RUN)

- QA-only integration onto exact B28 `f2dfbd0bb073e6152146a151eca138af8fc030e1`, source tree `4be7a5aebbdd77a820abc08ea37d349dcab6bcec`. Existing B27 real-X11 FAIL retained. Requires actual Ctrl+Z during a held guide pointer despite TextEdit focus, byte-exact Save rollback, no ghost, 6 native tools, Russian F1, GUI XeLaTeX PDF and independent visual review. Real B28 X11 / physical OS NOT_RUN pending new exact-head evidence.

## Unreleased — 2026-11-01: I26 B27 physical-input Linux/X11 Undo + six native tools (QA PENDING)

- QA-only branch based on [#69 B27](https://github.com/i-shutov/tikzarium/pull/69) exact source HEAD `1805a46cbca2985c4b4798ccf4b0e22171107297`, app source tree `5274ea9c12a3a9f25cea3b47c0fa504c1b5fff1b`. No edits to B-owned Rust or the old independent #48 branch. Updated X11 driver sends **real Ctrl+Z while holding a mouse press/drag on the provisional guide**, releases, GUI-saves and checks exact restored source bytes and zero ghost commands; then creates a fresh line, verifies Save and proceeds with all six native TikZ gestures, contextual Russian F1 and actual GUI XeLaTeX PDF/fitting.
- This is **NOT_RUN until exact-head hosted workflow plus independent saved-source/PDF/screenshot artifact review**. Unit-event B27 proof cannot substitute. Hosted X11 is not physical Windows10/MiKTeX or Mac M1/M4/XeLaTeX acceptance; no release. Cargo.lock remains untracked.


## Unreleased — 2026-11-01: I24 B26 actual X11 sticky whole-page resize QA (NOT_RUN)

- Non-production I23 QA bridge merged with **B26 #67** exact source `73878df418dd6343bbca9dd94a2e5daf979ed7fc`, src tree `47c4c86be10471a5f56f7019ad63a77e7f4480f5`; actual egui six-tool + GUI-save/build/export + Russian F1 and full-PDF visual evidence must be regenerated on B26. Driver now captures a genuine selected Fit Page resize/restore (1180×680 ↔ 1366×740); screenshot difference is **not** a visual PASS, and desktop new-page raster still NOT_RUN. Track exact Cargo.lock resolution separately, do not claim physical Win10/MiKTeX/M1/M4 QA. No release.
Expand Down
10 changes: 6 additions & 4 deletions fixtures/qa/n1-desktop-x11-1366.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schema": 1,
"profile": "B26 exact app-tree candidate; B25 screenshot acceptance historical; B26 re-review required",
"profile": "B30 exact app-tree: GUI-native source editor history isolated from visual inverse patch; actual held-click/held-drag Undo, GUI Save and native PDF",
"calibration_runs": [
41192581511,
41193030547,
Expand All @@ -11,7 +11,7 @@
],
"initial_png_sha256": "b65754a44205040655d6434b8a592b665ec4fa02deac4ff8c4dfc50ddc7f612a",
"selected_png_sha256": "61f3d83313300494bc43fa3696c148b2c54011b27682210610d81db1f68f966a",
"layout_note": "B26 reuses B25 button layout and six-gesture coordinates, now with persistent Fit Page on resize/new raster; these coordinates must be accepted by exact-B26 real X11 screenshot evidence, not inherited from B25.",
"layout_note": "B30 only changes Undo focus/native editor history, not known B26/B28 coordinates. Coordinates are hypotheses until this exact B30 real X11 source/PDF/screenshots are independently reviewed; no inherited visual PASS.",
"path_click": [
310,
18
Expand Down Expand Up @@ -128,7 +128,7 @@
698,
13
],
"reviewed_app_tree_sha": "47c4c86be10471a5f56f7019ad63a77e7f4480f5",
"reviewed_app_tree_sha": "965933b3f70504f2f4082bc22795bab67fad5d44",
"zoom_out_click": [
882,
72
Expand All @@ -144,5 +144,7 @@
"restore_size": [
1366,
740
]
],
"undo_held_pointer": true,
"b30_release_source_history_regression": true
}
42 changes: 42 additions & 0 deletions insights/2026-11-01_I26_B27_HELD_UNDO_X11_QA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# I26 B27 QA initial checkpoint — pending actual X11 acceptance
2026-11-01 · Parent B27 #69 `1805a46cbca2985c4b4798ccf4b0e22171107297`; app source tree `5274ea9c12a3a9f25cea3b47c0fa504c1b5fff1b`.

Pre-existing B27 exact-head CI: Rust, D QA, N1 app generated-source PDF, genuine hosted MiKTeX and font gate SUCCESS. Its real X11 workflow [41265211038](https://github.com/i-shutov/tikzarium/actions/runs/41265211038) FAILED **in source-tree guard before installing prerequisites or starting GUI** because it was still pinned to B26 `47c4c86b...`. Therefore no B27 real GUI PASS can be inherited.

I26 changes *only QA, workflow, fixture and plans/insights/CHANGELOG*. Exact-pin the B27 app tree, issue real click-held and drag-held Ctrl+Z before pointer mouse-up, save source through GUI and demand byte-identical original. Then assert fresh native gesture, six-tool Save, Russian F1 and XeLaTeX PDF. Two pure predicate tests guard against accepting a ghost command, unmodified source or unrelated Cyrillic mutation, but do not claim GUI. The new hosted run/artifact, independent screenshot review, successful PR merge and post-merge CI all **NOT_RUN at this writing**; no physical OS tests or release.

## I28 exact-head checkpoint — new real X11 verification pending

2026-11-01 · I28 QA integration onto exact B28 `f2dfbd0bb073e6152146a151eca138af8fc030e1` (independently verified app src tree `4be7a5aebbdd77a820abc08ea37d349dcab6bcec`). Real B27 X11 [41267001529](https://github.com/i-shutov/tikzarium/actions/runs/41267001529) was FAIL and remains historical evidence. B28 routes Undo during an armed guide pointer despite stale focused TextEdit, consuming the key; unweakened genuine X11 held-click/held-drag, exact saved-source rollback, fresh gesture, 6 native tools, F1 and GUI Save/Build/Export PDF must pass with independent source/PDF/screenshot review. Unit-event B28 success alone is insufficient. Real B28 X11 NOT_RUN, physical Win10/MiKTeX and Mac M1/M4 NOT_RUN, Cargo.lock untracked; no release.

## I29 real B28 bootstrap QA correction after failed run 41271124460

Independent first B28 exact-head X11 workflow [41271124460](https://github.com/i-shutov/tikzarium/actions/runs/41271124460) **FAIL** before first pointer: actual egui window and real Cyrillic clipboard were visible, but focused-source Ctrl+S did not persist the path within 10s. This is **not a B28 pointer Undo FAIL or PASS**; no held click/drag or PDF occurred. Artifact [13069461275](https://github.com/i-shutov/tikzarium/actions/runs/41271124460/artifacts/13069461275), ZIP SHA-256 `b07e24ca1f8b66d4a90d7e86a873c387ff8f3d8dbfe250abd78dd11e3f549b24`, 7 CRC-valid members and 5/5 embedded report hashes checked; startup, path typed and failure screenshots reviewed. The initial Ctrl+S is now **measured separately** and explicitly recorded as NOT_ACCEPTED if it fails; QA then uses the visible GUI Save button (same required vertical as the rest of the script), waits for and byte-checks the file. This is not a silent PASS of the shortcut. No production source edits or artificial source-file writes. Rerun is NOT_RUN until new exact-head CI and artifact audit.

## I31 — exact B29 GUI re-acceptance (pending new workflow evidence)

2026-11-01 · Accepted source truth: main `529217b89e83ffb93393eefb99a2a6ff07967c13`, B-owned draft PR #69 exact `133cab9eff2da0e2ab2ae9574e5328f2dad3ee62`, app source Git subtree `d7a487e91614c7b607ce92f53275e10e2a5ee911`. Previous B28 actual Linux/X11 [41271432298](https://github.com/i-shutov/tikzarium/actions/runs/41271432298) **FAIL**: source editor reintroduced line after app Undo reported success. B29 separates native TextEdit undo snapshots from revision-checked visual Undo; hosted B29 unit/event/TeX/MiKTeX checks passed, but the real desktop acceptance remains **NOT_RUN** until this independently pinned QA branch runs.

Preserve the entire I29 X11 procedure without weakening predicates: real held-click **and** held-drag Ctrl+Z; GUI Save of byte-identical original Cyrillic/macro source; no ghost command; fresh gesture still works; all six native tools; F1; external GUI XeLaTeX PDF + Unicode/embedded-font review; fit/resize screenshots. An automated workflow success is **not** manual visual acceptance. QA changes only QA workflow/driver/fixture/tests/docs, with a two-parent integration commit from QA and B29 source; do not edit B-owned production or legacy #48. Inspect exact-head artifacts before any QA→B29 or B29→main merge; use expected_head_sha and fresh post-merge CI. Physical Win10/MiKTeX, Mac M1/M4 XeLaTeX **NOT_RUN**; Cargo.lock untracked; no release.

QA status at commit creation: B29 X11 `NOT_RUN` until actual hosted CI starts and artifacts reviewed; earlier B28 failure remains valid evidence.

## I33 B30 exact tree integration checkpoint

2026-11-01 · B30 #69 `750fb6b743a516f44a362f2f568ce1b92c69e6f4`, app tree `965933b3f70504f2f4082bc22795bab67fad5d44`, main `529217b89e83ffb93393eefb99a2a6ff07967c13`; QA-only source/app exact pin, real Linux/X11 held Undo, subsequent fresh gesture, six native tool generation, F1 and PDF/resize captures are prescribed. B29 X11 [41274957152](https://github.com/i-shutov/tikzarium/actions/runs/41274957152) is a verified FAIL, never a B30 PASS. Hosted B30 Rust/D QA/N1/MiKTeX/fonts all SUCCESS; obsolete I23 B26-pinned workflow fails preflight, not B30 GUI. Actual B30 X11, independent report/source/PDF/PNG inspection and physical Win10/M1/M4 acceptance NOT_RUN on commit creation. No merge or release authorized by this note.

### I33 initial offline predicate issue — corrected before GUI

[First B30 QA run 41278805656](https://github.com/i-shutov/tikzarium/actions/runs/41278805656) **FAIL before cargo build/GUI** because renamed B30 fixture marker `b30_release_source_history_regression` did not match old unit-test lookup `b30_editor_undo_history_regression`. This is QA-only fixture/test mismatch, not a B30 GUI regression. Corrected test lookup to exact fixture field without weakening any source/gesture predicates; eight offline predicates require rerun, real B30 X11 remains NOT_RUN until new verified executable run and artifacts.

### I34 XQueryPointer diagnostic gate (after real B30 X11 FAIL)

[Exact I33 real Linux/X11 41279059557](https://github.com/i-shutov/tikzarium/actions/runs/41279059557) **FAIL** at held click Ctrl+Z, after 8/8 offline QA predicates and actual app build PASS. Artifact [13072965209](https://github.com/i-shutov/tikzarium/actions/runs/41279059557/artifacts/13072965209), ZIP SHA-256 `43aaffdc28bb7109c58d16ba35fffa9ec0e11e3441ee9e29b8f1efbe91b709e9`, 13 CRC-valid, 11/11 report hashes, screenshots independently reviewed. B30 screenshot after Ctrl+Z shows Line #2 before explicit driver mouseup; GUI Save contains IDs 1 and 2, saved .tex SHA `cb0581fccf2003b0e2b15c4e63ff267cadbaee86f36c256f8ed15c78a3a2e39e`, exactly same as B29 failure. **Server Button1Mask was not yet verified** across independent xdotool clients, so attribution is unresolved. I34 QA-only standard-library ctypes Xlib XQueryPointer checks Button1Mask before AND after Ctrl+Z, appends mask/phase to evidence, fails closed if not genuinely held, and preserves byte-exact rollback and no-ghost assertions. This avoids confusing XTest releasing the button with a true production defect. Fresh I34 real X11 run/verified artifact NOT_RUN at this commit; B production unchanged; no merge, physical Win10/M1/M4 NOT_RUN.

## I35 verified QA holding defect and XTest fix

Independent [I34 X11 41279540150](https://github.com/i-shutov/tikzarium/actions/runs/41279540150) **failed closed with actual server button state**: Button1Mask 256 before Ctrl+Z, 0 after `xdotool key --clearmodifiers ctrl+z`, both measurements before script mouseup. ZIP [13073180399](https://github.com/i-shutov/tikzarium/actions/runs/41279540150/artifacts/13073180399), SHA-256 `1f597a892e5bda878c0b84cfec78f0858e7e89138a55591b685721c4f807bc7a`, CRC-clean and 11/11 report hashes. Earlier I32/I33 X11 “held” ghost evidence is **INVALID_HELD_INPUT**, not accepted B30 root-cause proof. Native libXtst XTestFakeKeyEvent `Control_L + z` key-only sequence verified in local isolated Xvfb with server Button1Mask staying at 256 before/after, then 0 on independent button up. I35 QA-only driver now uses direct XTest for the held Undo and retains both XQueryPointer guards; negative source rollback still byte-for-byte exact. Actual I35 GUI/TeX/PDF/PNG acceptance NOT_RUN until rerun. B30 production and #48 untouched, physical Win10/M1/M4 NOT_RUN; no release.

## I36 keyboard receipt forensic enhancement after I35

Real I35 [41279880858](https://github.com/i-shutov/tikzarium/actions/runs/41279880858) actual X11 GUI **FAIL** with Button1Mask 256 both before/after XTest Ctrl+Z, and two owned lines after release, even though no app.log event flagged. This proves the pointer was held but not that the application received a usefully timed Ctrl+Z keypress. The I36 QA-only driver XSyncs every XTest Control_L/z press/release, dwells 80ms at each phase and verifies true server `XQueryKeymap` key-down bit, while enforcing Button1Mask held at every phase and saving focused X11 window id. Any loss fails closed before source attribution; byte-for-byte user TeX/no-ghost constraints untouched. Local Xvfb verification confirmed Control_L/z server key bits and Button1Mask throughout, then Button1=0 only after explicit mouseup. CI and independently reviewed real GUI evidence I36 NOT_RUN until workflow completes; physical Win10/Mac NOT_RUN.
Loading
Loading