Skip to content

feat(B42): icon-group palettes, clean Studio workspace and user MiKTeX server QA - #91

Merged
i-shutov merged 54 commits into
mainfrom
feat/b42-studio-workspace-windows-qa
Nov 2, 2026
Merged

i-shutov merged 54 commits into
mainfrom
feat/b42-studio-workspace-windows-qa

Conversation

@i-shutov

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

Copy link
Copy Markdown
Owner

B42 verified current HEAD — 2026-11-02 11:33 UTC

Draft, NOT merged. HEAD ee6ba68b28c63dcad326f9bf3713e0d9cbc03a8c, base main 93db2044b5b91f79c0e774be8806a3693ba7329b, app/src tree 736a6d44e19158d9e7936debe613e89a028e877e.

New actual egui::RawInput event-frame test clicks grouped palette icons for all six shared C native tools; selection and popup closing do not rewrite opaque/CRLF source or push Undo. Tests wait one render frame for newly opened foreground Area hit testing; no alternate generator. Fix real egui panel-order defect: full-width Studio status panel must reserve space before editable code/guide and optional diagnostics; test at 850×560 / 1366×768. Only B sources/plans/insights changed. Ubuntu hosted D QA: rustfmt, 105/105 app and 56/56 core tests, strict Clippy PASS on this exact HEAD. Rust CI, Windows/macOS matrix and independent D I61 full X11 not yet accepted; Studio bootstrap only verifies actual window/group popup. Physical Win10/M1/M4 NOT_RUN. Do not merge #37/#43. D PR #92 must re-lease to new B tree.


B42 latest exact-head B-lane QA — 2026-11-02

Draft, not merged. Head 8792995135474dbe2cb13d79b0607a582868c078 above unchanged main 93db2044b5b91f79c0e774be8806a3693ba7329b; app/src tree 0322d64b0a2d9ed542566bd635d6fbddffc7cfa1. Production fix: reserve a full-width Studio bottom status row before side/source/center/optional diagnostics (rather than late after CentralPanel). Event-frame regression at 850×560 / 1366×768 checks source and guide don't overlap status; six actual grouped C tool icon selection Response click events with unchanged CRLF/macros/Undo are also included. B-owned code and plans/insights only. Initial rustfmt mismatch from 1aa79bb… was repaired on this HEAD. Exact-head Rust CI, D QA, B42 X11 bootstrap are not yet accepted; independent full D I61 #92 must re-lease to this app/src tree. UNIT_EVENT ≠ full X11/physical Win10/M1/M4.


Latest B42 B-owned code + test snapshot — 2026-11-02

Draft / no merge. Head 1aa79bb8112997b3907089a965d6dedccc375f5a on main 93db2044b5b91f79c0e774be8806a3693ba7329b; B app/src tree 56e1a8a1fdd7ada8aa36688c2fc38c9caf726460. B42 now includes actual egui grouped-palette selection RawInput frames for six C-native tool icons AND an order-correct full-width Studio status bar reserved before the side/editor/guide panels, with RawInput overlap/TeX-integrity checks at 850×560 and 1366×768. Only B production files plus B plans/insights changed; no C generator/TeX replacement. Rust CI, D QA, Studio bootstrap still require exact-head completion. Actual D I61 #92 must be rebased/released against this source tree. UNIT_EVENT != actual X11 and != Win10/M1/M4. No merge of #37/#43.


Latest B42 exact-head checkpoint — 2026-11-02 11:2x UTC

Draft — no merge. Fresh base main 93db2044b5b91f79c0e774be8806a3693ba7329b; current PR HEAD cfa0d8dda4e07293b66aac1b4982f5026bca9e1a, B app/source tree f3b5937637a52478016f251089b31cd900ce5189.

Beyond prior B42 Studio work, this HEAD adds a real egui RawInput pointer group + individual C tool icon click regression for Geometry/Connections/Text and all six native primitives at 850×560 logical resolution. The new test measures the production Response rectangles, dispatches real group/palette click handlers and validates selected Tool, popup dismissal, unmodified CRLF/Russian/opaque source and no Undo entry. It is UNIT_EVENT, not X11/Win10/M1/M4. Existing separate six-gesture native guide test still covers actual guide source patches. No C registry/generator or A/D/E/F production file is changed; plans/insights updated in this PR.

The first HEAD ac8f609… returned exact rustfmt diagnostics; all three differences were corrected at cfa0d8dda4e07293b66aac1b4982f5026bca9e1a. Latest exact-head CI is not yet accepted: Rust, D QA, Studio bootstrap, hosted MiKTeX. Old B41-specific I51/I57 pre-GUI guards cannot establish B42 gesture results.

Independent D I61 #92 was still stacked on older dadd05b… and must re-lease to new app tree for true X11 six-gesture/Save-Reopen/Undo/F1/XeLaTeX PDF validation. Dedicated user Windows Server and physical Windows 10, M1/M4 are NOT_RUN.


B42 B-lane integration checkpoint — 2026-11-02 08:5x UTC

Draft, not merged. Base main 93db2044b5b91f79c0e774be8806a3693ba7329b; exact current PR HEAD 88877297726b0d788108e995b4dbec3e4bb22d92. No A/C/D/E/F source changes; this is the existing #91, not another micro-PR.

B-owned development added:

  1. Real Studio, not legacy, egui::Context::run(RawInput) pointer down/move/release test for the six C-catalogue primitives at 850/1366 logical widths; verifies one authored command, selected line, source-preserving F1, disk Save/Reopen and byte-exact visual Undo. UNIT_EVENT only, tool selection is injected in this particular test, not an independently proven clicked Studio popup.
  2. Reproducible UX source defect: floating palette anchored to SplitPanelLayout::source_default although the source SidePanel is resizable. Fix uses the actual source SidePanel response rect and closes/hides palette when the tool rail is hidden. Measured boundary regression at 240/475 pt.
  3. Reproducible F1 UX state mismatch: second F1 toggled Session::help off while leaving Help tab visibly unchanged. It now returns to Properties; new real-key RawInput press/release regression verifies tab transition and source integrity.
  4. Updated B plans/ and insights/ in the same PR. Previous hosted rustfmt diagnostic was corrected on the intermediate branch; latest exact-head CI must still pass independently, not inherited from older SHA.

Latest exact-head CI (at checkpoint, queued / not accepted):
CI,
D QA,
B42 Studio X11 bootstrap,
N1 XeLaTeX,
MiKTeX hosted.
The B42 bootstrap is not the six-tool actual desktop acceptance. The old D-owned I46/I47/I57 coordinate/tree guards are expected to require re-leasing; never count pre-GUI failures as functional PASS or FAIL of native gestures.

Hard merge gate: actual Linux/X11 B42 group icon click → selected C tool → six pointer gestures → inspector edits → highlighted editable code → F1 open/close → manual source Ctrl+Z vs visual Undo → Save/Open two distinguishable CRLF/opaque-macro files → XeLaTeX output/PDF raster, plus re-size source pane and hide/reopen tool rail. Screenshot and SHA artifact review at exact B42 app tree, D-owned independent driver. Physical Win10/MiKTeX and M1/M4 remain NOT_RUN. Provisional guide never authoritative over XeLaTeX PDF.


Owner-prioritized urgent UX redesign

Base exact main 93db2044b5b91f79c0e774be8806a3693ba7329b, PR HEAD 77ff306ee30d82d8325beb5b47165333a3761cc8. User rejected repeated long text buttons and a sprawling UI, citing prior TikZarium mockups.

Actual B42 Rust/UI code: 62pt vector group icon rail; four grouped floating palettes, not dozens of persistent full-word buttons; C-backed tooltip/help, explicit future-package adapter limitations. Short icon Open/Save/Build/Export toolbar. Editable TeX remains beside center native TikZ guide and actual external XeLaTeX PDF; three right context tabs Properties/Libraries/Help, on-demand log, persisted Studio/theme controls. Classical view remains temporarily as an escape hatch for regression comparison. No TeX/CAS/solver/PDF reverse mapping or arbitrary source rewrite.

Persistent Windows Server stream: scripts/tools/qa_windows_server_user.ps1 audits the USER-installed external MiKTeX with --disable-installer, copy-of-source SHA, actual PDF and inventory before/after, optional Rust cargo test --locked; manual-only qa-selfhosted-winserver.yml requires user-registered dedicated tikzarium-winserver self-hosted runner on main and exact expected SHA. Does not provision MiKTeX, alter global settings, use RDP or pretend Windows Server is Windows 10. The runner is NOT YET CONFIRMED, so the server test is NOT_RUN.

Tests, plans/, insights/, CHANGELOG and docs updated in same branch.

Hard merge gate: exact-head Rust fmt/test/clippy, hosted XeLaTeX/MiKTeX, newly re-pinned actual Linux/X11 screenshots of B42 icon group palette, full readable source/PDF, C help, all six gestures, Undo, Save/Reopen, manual visual comparison. Existing B41 coordinate profiles do not count. Separate post-merge main CI. Physical Win10 x64/MiKTeX and M1/M4 XeLaTeX still NOT_RUN.

This is a real code PR, NOT a cosmetic proposal; it remains DRAFT until evidence is accepted.

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

Integrator QA checkpoint on exact #91 head 88877297726b0d788108e995b4dbec3e4bb22d92 (base main 93db2044b5b91f79c0e774be8806a3693ba7329b), 2026-11-02:

  1. MERGE BLOCKED: strict Rust formatting fails on exact head, not just historical CI: CI 41415396724 Windows/macOS and D matrix 41415396838 Linux/macOS/Windows all stop at cargo fmt --all -- --check. The live log identifies crates/tikzarium-app/src/studio_ui.rs:571, the let frame = |event: egui::Event, ...| wrapping. Reformat and run fresh exact-HEAD fmt/test/clippy; current Rust tests did NOT execute after formatting failure.
  2. I51/I57 failures are intentional stale source-tree guards, not failed pointer or library functionality tests: I51 41415396712, I57 41415396770 exit before running egui. Re-pin independent D-owned drivers to the B42 app tree and collect new real X11 six-gesture/undo/source/PDF screenshots. Do not waive old guards or mark native gestures FAIL/PASS.
  3. Independent artifact review performed: downloaded actual B42 bootstrap artifact 13127836393 and visually inspected both 01-studio-workspace.png (SHA-256 b5f717856087c397b9a87a98965f581a180e6f055256724072a240f413538cad) and 02-group-palette-candidate.png (SHA-256 d3be3595ba89bed353a8af1a7c11a81c173ac4140722c2e1edc213e92a1e3c77). They demonstrate a real egui Studio window at 1366×768, editable source beside provisional grid, and the Geometry popup visibly open with four icons. They do not demonstrate actual tool selection, source gesture, output PDF, saved source, or the 850px layout. Bootstrap report's manual_screenshot_review=NOT_RUN is now historically reviewed by this integrator, but do not retroactively modify its uploaded report or elevate its overall acceptance.
  4. Separate QA semantic defect in proposed self-hosted Windows Server script scripts/tools/qa_windows_server_user.ps1: $fontsText -match '\byes\b' passes if any font line contains yes; it does not show all required fonts embedded, nor validate Cyrillic glyph/text content. Do not report font_audit=PASS on that predicate alone. Require explicit all-font embedding and independently verified expected Cyrillic text/glyphs, or mark partial/unknown until the user-server evidence exists. No dedicated tikzarium-winserver runner is verified, so persistent Server and physical Win10/M1/M4 remain NOT_RUN.

Hosted MiKTeX 41415396713 and N1 41415396711 are green but do not override these merge gates. Keep B42 in existing PR #91; no parallel edits to B-owned branch from integrator.

  1. Independent hosted MiKTeX artifact inspection completed: downloaded D06 artifact 13128125867, inspected the JSON setup/engine/source records, compared packages-before.txt vs packages-after.txt byte-for-byte (identical), checked PDF hash ff1d8e12415b35210674011f0185da0d9782655d831ac2dc58a679fbf0b9e54a, used local pdfinfo, pdffonts, pdftotext, and rendered its actual one-page XeLaTeX output for visual inspection. The artifact identifies MiKTeX-XeTeX 4.16 / MiKTeX 25.12 on hosted Windows Server 2022, PDF producer MiKTeX-dvipdfmx, embedded subset DejaVu Serif + Latin Modern Math and extractable Примитивы TikZ, Кривая Безье αβγ text. This verifies the hosted D06 proof; it does NOT satisfy the persistent user-server / physical OS / real Studio GUI acceptance. The standalone user-server script's any-yes font predicate from point 4 still requires correction.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

N1 integrator handoff — I61 actual-B42 QA re-lease, 2026-11-02

No production edits or merges. Main 93db2044b5b91f79c0e774be8806a3693ba7329b; frozen B42 #91 91e2d8201cd0c016e00d52618e4024fedb66424e, app/src tree 64df229392c03a99ca29238bcc2e5f422c4d7409 (read directly from Git tree). The separate existing #92 stacked I61 QA was re-parented with expected-head lease from old 517906e onto B42, new QA HEAD cc33930892fdecc915cc89678ecaf021b2a5bc6a; compare B42...I61 is ahead one commit, behind zero, exactly six QA-only files. All B-owned app/core/catalogue sources unchanged.

New exact QA run 41449047973: verified exact B42 source-tree lease PASS, four offline positive/negative all-font pdffonts audit tests PASS, Linux/X11 + external TeX Live prerequisite installation still running at checkpoint; actual GUI gestures, saved source/PDF and manual artifact audit NOT_RUN. QA used frozen app tree 64df229... and latest original B42 bootstrap 41445054318 whose two PNGs' SHA-256 match previous manually inspected B42 screenshots. Those images establish only geometry of candidate coordinates, not gesture or PDF PASS.

Exact B42 core CI/Rust 41445054395, D QA 41445054340, N1 generated-source XeLaTeX 41445054389, hosted D06 MiKTeX 41445054366, Unicode/fonts 41445054327 are now all completed SUCCESS. Red I51/I57 on that SHA are hard-coded old B41 tree guards before GUI, NOT tested B42 product failures. Do not disable them merely to paint CI green: after I61 actual acceptance replace/retarget in one coherent integration step with real Save/Open/Undo/Help/PDF + exact provenance.

Until original I61 artifact and the remaining N1 real-GUI Save/Open/Undo/help are independently accepted, #91 and #92 remain draft and merge is blocked. Physical Windows 10/MiKTeX, Mac ARM M1/M4 and user Windows Server GUI remain NOT_RUN.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

N1 tangible GUI milestone (2026-11-02): current B42 HEAD 91e2d8201cd0c016e00d52618e4024fedb66424e unchanged. Independent QA #92 HEAD cc33930892fdecc915cc89678ecaf021b2a5bc6a, directly based on that B42 app/src tree, actual hosted Linux/X11 run 41449047973 SUCCESS. Downloaded original artifact 13143756910; 40/40 SHA-256 manifest matches; manually inspected six-tool source screenshot, exact XeTeX/dvipdfmx PDF raster, exported PDF rendered inside Studio beside editable code, Russian C-backed help; user macro and Cyrillic intact; pdffonts emb=yes, no missing glyphs in raster. Full independent review: #92 checkpoint.

Accepted subvertical: 6 real GUI pointer/icon tools → 6 native TikZ lines saved to figure.tex → real XeLaTeX PDF and embedded font. Still not N1 release ready: real two-file GUI Open/dirty Save, manual-source + visual Undo, inspector Apply, deterministic F1 open/close (captured F1 frames show Properties then Help, not the driver's intended sequence), and physical Win10/M1/M4 remain open/NOT_RUN. Keep #91/#92 Draft, no main merge. Do not rerun old I51/I57 B41-tree gates expecting B42 PASS; replace them only with meaningful accepted B42 scenarios.

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

B42 stream-B freeze / exact-head verification — 2026-11-02

No B code changes, no new PR and no merge in this checkpoint. Re-read current main/AGENTS/ROADMAP, B plans/insights, #91/#92 branches, exact-head CI job summaries and the Ubuntu Rust + I61 X11 job logs.

  • main 93db2044b5b91f79c0e774be8806a3693ba7329b; frozen feat(B42): icon-group palettes, clean Studio workspace and user MiKTeX server QA #91 91e2d8201cd0c016e00d52618e4024fedb66424e; B crates/tikzarium-app/src tree 64df229392c03a99ca29238bcc2e5f422c4d7409. feat(B42): icon-group palettes, clean Studio workspace and user MiKTeX server QA #91 remains draft, 42 ahead / 0 behind. Please keep this B SHA stable until the remaining independent desktop gates are accepted; no decorative changes.
  • Exact B HEAD: Rust CI 41445054395 3/3 PASS; D QA 41445054340 7/7 PASS (including D05). Read Ubuntu job 125275972615: 107/107 app, 56/56 core, strict rustfmt and Clippy PASS. Actual B42 RawInput six icon-selection/Studio gesture, help-icon/F1 and dirty-Open Save tests are UNIT_EVENT; not physical/desktop proof. N1 XeLaTeX, Unicode/fonts, hosted D06 MiKTeX, B42 bootstrap all SUCCESS; bootstrap only proves real window/group popup.
  • Independent D I61 (stacked D QA): actual B42 Studio six native icon gestures → saved TeX → XeLaTeX PDF #92 already re-parented exactly onto frozen B: QA HEAD cc33930892fdecc915cc89678ecaf021b2a5bc6a, one QA-only commit atop B HEAD. I61 Linux/X11 run 41449047973 SUCCESS; original artifact 13143756910, 40/40 SHA-256 manually checked by independent reviewer in #92 evidence. Accepted subvertical: six true group/icon pointer gestures → six ordinary C-catalogue commands saved by GUI to figure.tex (unknown macro/Unicode unchanged) → external XeLaTeX PDF with embedded fonts and inspected render beside editable source and Russian help. This is real hosted Linux/X11, not physical Windows 10/macOS M1/M4.
  • N1 overall still blocked: real two-file GUI Open / dirty Save-Reopen with CRLF and opaque macros; source Ctrl+Z after manual editing vs visual Undo; inspector Apply; deterministic F1 open/close; full B42 post-integration checks. The I61 QA driver sends key("F1"); screenshot(...) twice at lines 235–239 with only 0.18s delay inside key(); captured screenshots were reversed relative to labels. This is ambiguous, not proven product failure or F1 PASS. D should synchronize on a visible actual dock state across separate key press/release/frame cycles, not just increase arbitrary delays. Do not alter B production absent a reproducible real GUI defect.
  • Old I51/I57 B41-tree FAILs stop before GUI: leave classification STALE TEST GATE; integrator/D should replace/retarget coherently without waiving real X11 acceptance. Dedicated user Windows Server GUI and physical Win10/M1/M4 remain NOT_RUN.

B lane status: FROZEN / NO CODE CHURN. #91 and #92 remain draft, do not merge yet. Only reopen B for a reproduced blocking product defect, with failing test first, one substantive fix and a renewed exact-tree QA lease.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

Integrator handoff (2026-11-02): frozen #91 app/src 64df229392c03a99ca29238bcc2e5f422c4d7409 still unchanged. New real B42 I61/I62 run 41470355844 FAIL inside real GUI two-file Open, not infrastructure. Independent original artifact 13154818704 54/54 SHA matched; six real native gestures, XeLaTeX PDF/Cyrillic/embedded fonts, true F1 Properties→Help→Properties, native source Ctrl+Z and visual Session Undo PASS on exact QA HEAD. The GUI File popup is visible in screenshot 33, but after click (440,93) + Ctrl+A/paste of second-crlf.tex it disappears (screenshot 34); screenshot 35 is identical to 34 and the second file isn't modified. Product-vs-driver focus UNRESOLVED until separate intermediate screenshots immediately after field click and Ctrl+A. Exact source/PNG/digest details and next bounded repro in #92 audit. Please do not churn B HEAD except for a confirmed production defect; no merges while N1 Open/CRLF/dirty handling remain unaccepted.

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

B42/I62 correction — earlier coordinate diagnosis withdrawn (2026-11-02)

The previous claim in this comment was wrong. I re-downloaded the original I62 artifact 13154818704, verified ZIP CRC and 54/54 report.json SHA-256 entries, and visually inspected original 1440×900 screenshots 33/34/35. The earlier assertion that the QA driver clicked the label instead of the text field and then the text field instead of Open must not be used to change the driver.

Actual popup geometry in screenshot 33 (SHA-256 29d801cc51bb92c3530a1553c25d08171f375707fc24025ea38d38349d81ce08):

  • TeX-project label y≈63–75; real figure.tex TextEdit x≈307–575, y≈83–103. Existing ROOT click (440,93) IS IN TextEdit.
  • Открыть путь button x≈307–390, y≈115–132. Existing ROOT click (351,124) IS ON Open.
  • Suggested replacements (440,120)/(350,150) would hit the Open/Save-As actions, respectively, and are not valid corrections.

What is actually demonstrated: screenshot 34 already has the popup closed after pointer/click + Ctrl+A + paste, with unchanged figure.tex. Screenshot 35 after Open is byte-identical to 34 (SHA-256 8d71904489572c4bc0cabc5448f6221447bfbb3f553878f02fc297dbad8f8733). The independent second fixture still has 9 CRLF, no bare LF, and opaque macro unchanged; second-file Save not accepted. This does not prove a B product defect or a coordinate mistake; cause remains unresolved between popup dismissal, focus and input timing.

Bounded D-owned next repro: capture popup and X11 focus after mousemove --sync but before click, after click, after Ctrl+A, and after paste separately. Stop at the first closure/unexpected focus; record actual TextEdit text before attempting Open. Do not rerun the entire XeLaTeX suite blindly or bypass the real GUI. If a correct manual/driver click consistently closes the popup, give B a minimal reproduction for the production handler, then failing UNIT_EVENT before a B patch.

Frozen provenance: main 93db2044b5b91f79c0e774be8806a3693ba7329b; #91 B 91e2d8201cd0c016e00d52618e4024fedb66424e; app/src tree 64df229392c03a99ca29238bcc2e5f422c4d7409; stacked #92 e4f68187ccdd944b67151ac18955d1540b2b176d. Exact-head Rust CI 3/3, D QA 7/7, six native UNIT_EVENT PASS; narrow full real hosted Linux/X11 six gestures→Save→XeLaTeX PDF PASS, expanded Open/dirty/Inspector gate OPEN. Physical Win10/M1/M4 NOT_RUN. No B commit, PR or merge. Integrator's independent correction.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

Integrator correction / do not propagate incorrect I62 coordinates. The original 1440×900 33-file-menu-before-open.png (SHA-256 29d801cc51bb92c3530a1553c25d08171f375707fc24025ea38d38349d81ce08) puts (440,93) inside the figure.tex TextEdit (x307–575,y83–103), and (351,124) on the Открыть путь action (y115–132), NOT on the label/TextEdit as claimed in the latest B/QA handoffs. The suggested replacements (440,120)/(350,150) would target the Open/Save-As actions, respectively. Original pixel+crop audit and bounded event-by-event X11 diagnosis: PR #92 correction. No B production bug proved, but no coordinate-only resolution proved either. Keep B SHA frozen; do not re-run full workflows blindly or merge before actual two-file Open/CRLF/Inspector Apply acceptance.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

N1 P0 — source-proven ROOT CAUSE of B42 File → Open path collapse (integrator handoff, 2026-11-02)

Do not change test coordinates. Re-read exact refs: main 93db2044b5b91f79c0e774be8806a3693ba7329b, frozen B #91 91e2d8201cd0c016e00d52618e4024fedb66424e (app/src tree 64df229392c03a99ca29238bcc2e5f422c4d7409), stacked QA #92 e4f68187ccdd944b67151ac18955d1540b2b176d. User's original I62 run 41470355844 fails at second file Open; before that actual six gestures, Save, Unicode PDF, F1 and Undo passed. Original ZIP artifact 13154818704 reviewed with 54/54 SHA matches. Screenshot 33 displays the open File menu with TextEdit at root (440,93); screenshot 34 menu closed after click+Ctrl+A+paste; screenshot 35 identical to 34. The coords are correct, so the previous QA suggestion to shift them must not be applied.

Exact dependency-level proof

Project Cargo.lock pins egui/eframe 0.33.3. Production crates/tikzarium-app/src/main.rs:1196 creates File menu via ui.menu_button("Файл", ...) and places egui::TextEdit::singleline(&mut self.file_field) INSIDE it (1198–1202). This API uses the default MenuConfig::default(). Upstream exact egui 0.33.3 source, menu.rs defaults its close_behavior to PopupCloseBehavior::default(); popup.rs defaults that to CloseOnClick, explicitly closes on ANY click even INSIDE the popup. popup.rs:595–619 implements this via was_open_last_frame && pointer.any_click(). Therefore a normal user click to focus the File menu's TextEdit itself closes the menu before Ctrl+A/paste; this exactly explains the observed frame sequence. This is a source-established production GUI design defect, not an X11 coordinate mistake. No corrected executable/GUI validation yet.

Single B-owned production fix within existing #91 — unfreeze intentionally, then RE-freeze

Replace only ui.menu_button("Файл", ...) with egui 0.33.3 egui::containers::menu::MenuButton::new("Файл").config(egui::containers::menu::MenuConfig::default().close_behavior(egui::PopupCloseBehavior::CloseOnClickOutside)).ui(ui, |ui| { /* same existing exact File controls */ });. Upstream 0.33.3 MenuButton::ui supports this API. Keep explicit ui.close() on activated Open and Save As, preserve all File/Save/dirty-confirm path protections and C-authored source. This changes only File popup behavior; DO NOT alter general menu defaults, fonts, CAD/TeX runtime or QA input coordinates.

Require a B-owned real egui RawInput press/release regression: open File menu; click inside path TextEdit; type a distinct second path; prove menu stays open and field changes; click actual Открыть путь then show the expected dirty-confirm or load result. A UNIT_EVENT does not substitute for the independent real Linux/X11 acceptance. Update B code+tests+plans/insights/CHANGELOG in one substantive B commit, run exact-head Rust/Clippy. Publish new B HEAD and crates/tikzarium-app/src Git-tree SHA; freeze B; only then let independent D #92 rebase/lease its source guard and run its one already defined end-to-end X11 sequence (second CRLF Open/Save/Reopen, dirty Cancel, inspector Apply, source/PDF/font/hash+manual PNG review). Avoid CI reruns on old SHA and do not create new PRs. Physical Win10/M1/M4 remain NOT_RUN. Merge only after exact-head independently accepted artifacts.

Separate release gates

Connected N2 library states and same-C Russian help must remain independently checked (I61 currently does NOT cover real library connect/disconnect); hosted Windows Server MiKTeX does not prove physical Win10, Linux TeX Live does not prove Mac ARM. No merge at this checkpoint.

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

B42 P0: File popup focus defect — updated exact SHA (2026-11-02)

The reproducible I62 real Linux/X11 failure (File menu closes when focusing the path TextEdit, despite correct coordinates) is explained by the locked egui 0.33.3 default PopupCloseBehavior::CloseOnClick. In the existing B draft #91 only, replaced File menu with MenuButton + MenuConfig::close_behavior(CloseOnClickOutside), retained explicit ui.close() for Open/Save As and all existing safe file handlers. Extracted the actual production menu handler for a new headless egui::RawInput event-frame regression: real File trigger click → TextEdit pointer focus → Ctrl+A + path text → Open click, with independent CRLF/Cyrillic/opaque-macro fixture. Updated B plans/insights in the same substantive block. No A/C/D/E/F production edits and no new PR.

Correct final current HEAD after hosted formatter/compiler corrections: 09a4df5baf0f7446bb02c68fbb126821d2a0ff9f; app/src Git tree 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb; base main 93db2044b5b91f79c0e774be8806a3693ba7329b. Earlier SHA a6e1da2… and intermediate f1e16af… are NOT accepted heads: rustfmt and then Rust E0308 match-arm type issues were fixed within #91. The current SHA passed Ubuntu rustfmt, 108/108 app tests (including the new exact production-handler popup event test), 56/56 core, and hosted Ubuntu D QA job; source confirmed from Ubuntu job logs. Ubuntu strict Clippy and QA job completed SUCCESS. Full exact-head matrix still running: Rust CI, D QA. Do not infer matrix PASS until all jobs complete.

Merge HOLD and B freeze from here: D #92 remains based on OLD B HEAD 91e2d820…. D must wait for successful exact-head Rust + D matrix, then re-lease 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb and independently execute real Linux/X11 two-file CRLF Open/Edit/Save/Reopen, dirty Cancel, Inspector Apply, source/PDF/font/screenshot hash review. The new UNIT_EVENT PASS is NOT corrected physical X11 acceptance. Old I51/I57 failures are obsolete B41 pre-GUI guards. Physical Win10/MiKTeX and Mac M1/M4 XeLaTeX NOT_RUN.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

I63 integration checkpoint — B freeze honoured

Confirmed frozen B 09a4df5baf0f7446bb02c68fbb126821d2a0ff9f / app/src tree 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb from GitHub Git objects and all core exact-head CI (Rust, D QA, hosted MiKTeX, XeLaTeX, fonts) SUCCESS. No change made to B code or branch. Existing stacked D #92 has now been re-leased as a single integration merge commit 4999df53b17d6e381942968da35f7daf91feabe2, with new source-tree guard 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb and unchanged production app tree. Real X11 run 41505201874 is running; pending actual GUI proof of fixed File TextEdit and second-file CRLF Open/Save/Reopen/dirty Cancel. Do not unfreeze B for cosmetic QA changes. Old I51/I57 B41 fixed-tree FAILs are PRE-GUI stale gates, not product regression. Inspector Apply and physical Win10/M1/M4 remain NOT_RUN. Merge HOLD until manual original artifact review + exact-head acceptance.

Frozen B42 source + independent real Studio six-gestures/Save/Open/CRLF/dirty Cancel/Inspector Apply/F1/Undo/external XeLaTeX PDF and original 69/69 SHA audit. Physical Win10/Mac ARM NOT_RUN; staged PR only.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

B42 stream-B exact-head checkpoint after I64 QA merge (2026-11-02 UTC)

Fresh refs read: main = 93db2044b5b91f79c0e774be8806a3693ba7329b; draft #91 HEAD = 1306ab0f8394bdaba60ad8fc043d9bdf88571c1e; crates/tikzarium-app/src Git tree = 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb. Stacked independent #92 was merged into #91, NOT main, at 1306ab0…; Git commit file list contains D-owned QA/workflow/docs files only, with unchanged B production app/src tree versus 09a4df5…. PR #91 is still draft / unmerged. No B code edits, feature commits or new PR in this checkpoint.

Accepted independent evidence against unchanged B production tree: I64 actual hosted Linux/X11 run 41506898550 SUCCESS at #92 premerge HEAD 11f6ba85a69c52ba809a40fb3388beb9ca2b806d, with Git tree lease to 72499c6…. Real six C-native tool icon/pointer gestures, editable source/GUI Save, two-file CRLF+opaque-macro Open/edit/Save/Ctrl+O reload, dirty Cancel, F1 Properties↔Help, text Ctrl+Z, visual Undo, pinned Inspector draft→Apply→Undo, external XeLaTeX PDF/Cyrillic/all fonts embedded PASS. The D independent reviewer documents original artifact 13171147096 69/69 SHA-256 plus manual original screenshot/source/PDF review in #92 QA report. These are hosted Linux/X11, not physical Win10/M1/M4.

New merged #91 HEAD exact-CI not yet accepted as of this note: Rust CI 41507862642, D QA 41507862694, I61 real X11 41507862704 are in progress. Font and Studio-bootstrap-only jobs are SUCCESS; they cannot substitute for full I64. Previous B code HEAD 09a4df5… has Rust/D QA SUCCESS and 108/108 app (including six UNIT_EVENT) + 56/56 core; those results remain prior-SHA evidence until the merged HEAD completes.

Please preserve the B production source tree, avoid further B churn, and make the #91→main decision only after exact new SHA CI/QA is green. Old I51/I57 B41-tree pre-GUI FAILs remain stale gates, not regressions. Physical Windows 10/MiKTeX and M1/M4/XeLaTeX NOT_RUN; no silent TeX substitute.

i-shutov commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

N1 Linux/X11 integration acceptance — exact head 1306ab0f (2026-11-02)

Prerequisites freshly verified: main=93db2044b5b91f79c0e774be8806a3693ba7329b; #91 exact head 1306ab0f8394bdaba60ad8fc043d9bdf88571c1e, B production app/src tree 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb; QA #92 merged into #91 only at 1306ab0f, not into main. No open #92 and no B/D development branch modifications by this integrator. Source-of-truth AGENTS, PRODUCT_SPEC, ARCHITECTURE, ROADMAP, plans/insights/CHANGELOG and PR diff reviewed, not historic PR body.

Exact-head CI SUCCESS: Rust CI 41507862642 3/3, D QA 41507862694 7/7, hosted Windows Server MiKTeX 41507862875 2/2, N1 app/source/TeX 41507862917, Unicode/font 41507862709, Studio bootstrap 41507862695 (bootstrap != full GUI), and full I64 actual X11 41507862704 all PASS. Exact source-tree guard passed in both workflow and Python. I64 job 125491666925 runs actual production compiled egui binary; reports six real native icon/pointer gestures, source/editor + GUI Save, F1 Properties→Help→Properties, native Ctrl+Z vs visual Undo, actual Node x draft→pinned C-backed Inspector Apply one-line patch→Undo, two-file CRLF/opaque-macro File Open/edit/Save/Ctrl+O disk reload, dirty Open→Cancel, external TeX Live XeLaTeX PDF Cyrillic/all-fonts-embedded.

Independent original artifact audit in this integration cycle: downloaded artifact 13172900548, ZIP CRC PASS, independently hashed 69/69 manifest entries and confirmed exact report.json.source_head_sha=1306ab0f... and app tree. Original GUI PNGs visibly inspected (Tools+source, F1 26/27/28, Inspector 28a/b/c/d, File Open 33/33a/33b/34/35, saved/reload 36/37, dirty confirmation/Cancel 39/40, in-app PDF 23/25). Actual figure.tex has six authored native TikZ commands and preserved \\UserLabel Cyrillic; SHA c7fa5e2e.... second-crlf.tex: 9 CRLF / 0 bare LF, opaque \\OpaqueSecond intact, saved SHA 66ef34ea.... Independently rasterized figure.pdf, visually confirmed six figures and Cyrillic Не менять; pdftotext extracts it; pdffonts has one DejaVuSerif, emb=yes/sub=yes/uni=yes, PDF one page; SHA b3e06765.... Script's internal manual_image_review=NOT_RUN truthfully describes unattended step; this subsequent independent review is recorded here, not rewritten in original artifact.

Decision: N1 hosted Linux/X11 release block ACCEPTED on exact #91 head, with N1 source/file/help/Inspector/XeLaTeX vertical satisfied. This is not an executable installer, not Windows10/MiKTeX or Mac M1/M4 user hardware proof. library_inspector=NOT_RUN for N2 real GUI library connect/disconnect on B42; continue N2/N3 without making them a false PASS; physical_win10_miktex=NOT_RUN, physical_mac_m1_m4=NOT_RUN, user dedicated Windows Server GUI NOT_RUN. Do not declare v1.0 release or full N5 acceptance. Old I51/I57 B41 SHA failures are stale pre-GUI gates; their assertions were not deleted and historical runs not silently promoted.

Integration condition: #91 may now be merged into main only with expected_head_sha=1306ab0f8394bdaba60ad8fc043d9bdf88571c1e, preserving the source tree; after merge record new main SHA and separate postmerge CI results/artifacts. Do not dispatch duplicate workflows for this exact head. Tracked plans/insights/CHANGELOG already accompany the PR; their historical PENDING labels refer to their authoring snapshots, superseded for this head by this accepted timestamped checkpoint. Next blocks: real N2 connected-library GUI regression and N3 catalogue coverage, then installer + physical OS acceptance before release.

@i-shutov
i-shutov marked this pull request as ready for review November 2, 2026 19:24
@i-shutov
i-shutov merged commit 3fb25ca into main Nov 2, 2026
19 checks passed

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

B42 N1 merged to main — post-merge checkpoint (2026-11-02)

Actual GitHub merge: PR #92 QA merged into #91 first, then integrator marked #91 ready and merged it with GitHub's expected_head_sha=1306ab0f8394bdaba60ad8fc043d9bdf88571c1e, GitHub result merged=true and new main 3fb25ca70ce94ad9a5b1cd63606ad45390f1f68b (merge commit). No other PR/new test workflow created. The complete independent original I64 artifact 13172900548 was re-downloaded, 69/69 file SHA-256 verified, visual File→Open/CRLF/dirty Cancel/F1/Inspector Apply PNGs, native source and independently rasterized exact PDF reviewed. Scope is N1 hosted Linux/X11 acceptance only, NOT an installed product release. Evidence details in preceding N1 acceptance checkpoint.

Separate post-merge CI actually triggered automatically by push/main (no manual dispatch): N1 41509674961, real I61 X11 41509674984, D QA 41509675312, Rust CI 41509675268, hosted D06 MiKTeX 41509675169. At checkpoint these are IN_PROGRESS/QUEUED, not PASS; evaluate their exact main-head job logs and artifacts separately before marking merged main accepted. No reruns without cause.

Main release blockers remaining: (1) N2 libraries in the new Studio dock real X11 Connect→Disconnect→Undo and five independent states: the old B41 I53/I57 hardcoded-tree test was retired from auto-main, not proof of B42 N2; I64 report library_inspector=NOT_RUN; (2) N3 depth of the single offline Russian C catalogue for all exposed controls; (3) N5 actual physical Windows10/MiKTeX and Mac M1/M4 external XeLaTeX, application packaging/installers, native GUI/font/Unicode acceptance — all NOT_RUN. Strictly no v1.0 release claim and no return to CAD/CAS/TeX rewrite. Tracked plans/insights/CHANGELOG were included in #91; prior PENDING labels are historical authoring-time states, superseded by this concrete acceptance/postmerge checkpoint.


Post-merge integration resolution — 2026-11-02, main 3fb25ca7

All five automatic post-merge workflows now completed successfully on the unchanged main SHA 3fb25ca70ce94ad9a5b1cd63606ad45390f1f68b: Rust native CI 41509675268 3/3 jobs, D QA 41509675312 7/7, actual compiled Studio Linux/X11 41509674984 1/1, hosted Windows Server 2022 MiKTeX + independent uploaded-PDF audit 41509675169 2/2, N1 authoring XeLaTeX 41509674961 1/1. Job SUCCESS is not an assertion that every test line within every job was green; see masking issue below.

Downloaded the new post-merge I61 artifact 13171963063, ZIP CRC valid and 69/69 file SHA-256 match the captured report. Provenance source_head_sha=3fb25ca70ce94ad9a5b1cd63606ad45390f1f68b, app/src tree 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb. Screenshots visually checked: Inspector Apply produced a changed native node command and Undo, distinct second file visibly loaded by GUI, CRLF file edited/saved/reopened, F1/properties, dirty Cancel. The actual saved second source has 9/9 CRLF line endings and zero lone LF with Cyrillic/opaque macro. Re-rendered actual figure.pdf displays six TikZ constructions and Cyrillic text; pdffonts reports only embedded CID TrueType DejaVuSerif, Unicode mapping present, single PDF page. Linux/X11 N1 remains ACCEPTED after merge; physical Win10 and Mac M1/M4 still NOT_RUN.

Verified binary deliverables rather than inferring them from CI status: Rust CI run 41509675268 artifact 13172152993 has actual tikzarium-app.exe and tikzarium-cli.exe, file inspection PE32+ Windows x86-64; artifact 13173272049 has actual tikzarium-app and tikzarium-cli, Mach-O ARM64. Both are bare executables, NOT installers; no physical desktop run, Windows signing, macOS signing/notarization or M1/M4 launch has been established. Provenance-stamped unsigned portable preview ZIPs were also assembled from these exact artifacts for owner-side future smoke (no TeX/font binaries bundled), without claiming platform acceptance or uploading a release.

New actionable CI-debt finding, do not conceal: in successful hosted MiKTeX job 125497962498, step “Direct Python QA also refuses MiKTeX automatic installation” prints FAILED (failures=1) for test_qa_smoke.FixtureHarnessTests.test_direct_glyph_audit_includes_miktex_offline_flag; the test expects literal xelatex but CI correctly sets TIKZARIUM_XELATEX to the private absolute MiKTeX executable path. The subsequent successful python -c masks the nonzero exit of python -m unittest in the PowerShell step. Classification TEST_ENVIRONMENT_ASSERTION_DEFECT + MASKED_CI_FAILURE, not proof that MiKTeX compiled incorrectly (the real PDFs and independent font/text audit PASS). Fix together in next substantive release-integration block, not a separate CI-only micro-PR: isolate the test's injected engine env, assert the actual --disable-installer argument, and fail closed on $LASTEXITCODE immediately after each Python test call in .github/workflows/qa-miktex-windows.yml. Do not weaken/off-switch the test or claim all tests green before a successful corrected head.

Next critical vertical is N2/N3 real Studio Libraries dock (current tikz_libraries.rs has four library Connect/Disconnect/Undo UNIT_EVENT tests and shared C help, but current I61 report library_inspector=NOT_RUN); require actual pointer clicks, ordinary source preamble diff/Undo, source/PDF and five independent installed/loaded/compatible/tool/help axes, plus contextual offline Russian help. Then N5 physical platform GUI and reproducible signed/packaged release. Historical B41 hard-coded tests are not a B42 failure; no blind reruns or cosmetic PRs.

i-shutov commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner Author

Post-merge N1 acceptance & portable physical-smoke handoff — 2026-11-02

Fresh repo truth: main = 3fb25ca70ce94ad9a5b1cd63606ad45390f1f68b; #91 and #92 both MERGED/CLOSED, no open PRs; Studio crates/tikzarium-app/src tree remains 72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb. Reviewed current AGENTS/PRODUCT_SPEC/ARCHITECTURE/ROADMAP, B/I plans+insights and CHANGELOG. This supersedes historical Draft/NOT_RUN notes for N1 hosted Linux/X11 only.

Exact-main postmerge CI now COMPLETE, not merely IN_PROGRESS

  • Rust native CI 41509675268: 3/3 jobs PASS, including Windows Server 2022 x64 release binaries and hosted macOS 15 arm64 native release binaries.
  • D QA 41509675312: 7/7 jobs PASS (Linux/Windows/macOS hosted).
  • real X11 I61 41509674984: 1/1 PASS. Downloaded original artifact 13171963063, validated artifact ZIP SHA-256 a0c3150fa0553a3810dcb58492d6c14ab45e55068d6153b64bfb9faa690edfdb, CRC and 69/69 evidence checksums. Real six icons/gestures, code/GUI Save, pinned Inspector Apply/Undo, manual Ctrl+Z, second CRLF/opaque-source Open/Save/reload, dirty Cancel, F1, external TeX Live XeLaTeX PDF, Unicode and all embedded fonts reported PASS. Manually inspected original selected GUI frames/source and rasterized resulting PDF: line, rectangle, circle, Bézier, arrow, node, Cyrillic Не менять and DejaVuSerif embedded. 53/55 screenshot PNG hashes equal earlier independently reviewed I64 baseline; the two build/PDF status frames differ, so the new artifact and PDF were checked separately. The artifact's recorded manual_image_review=NOT_RUN is a historical field, not silently rewritten.
  • hosted MiKTeX 41509675169: 2/2 PASS, actual hosted Windows Server MiKTeX 25.12, not physical Win10.
  • N1 XeLaTeX 41509674961: 1/1 PASS.

Tangible build outputs for physical smoke (NOT an installer/release)

Downloaded Windows native CI artifact 13172152993 and macOS native CI artifact 13173272049. Verified complete GitHub artifact digests, individual binary SHA-256 and PE32+ x86-64 / Mach-O arm64 headers. Created portable, unsigned, not-notarized and uninstalled physical-smoke bundles locally with unchanged release-profile app+CLI binaries, SHA256SUMS, provenance, noninstalling smoke scripts, sample .tex and explicit NOT_RUN target-host checklist. No TeX packages, fonts, renderer, drivers or hidden installer bundled. Not published as GitHub Release; local portable bundle SHA-256: Win10-x64 ZIP 17594ddbf37efded65fd42ef90c336eba9ec6312cbe5451f5a991a415eeea2bc; macOS-arm64 TGZ a1d486980334f3e34c6e3bacb830fb9db285edd176dd8671c105279ada689cd7. Production binaries are hosted CI outputs, not yet executed on physical Win10/M1/M4. Neither package is an installable installer.

Next SINGLE critical path, not old B41 CI/UX churn

N2 + N3: the B38/B41 historical four-library real-X11 driver and hardcoded app-tree guard are not proof for current B42 Studio; current I61 correctly marks library_inspector=NOT_RUN. Close one real Studio connected-library vertical: arrows.meta/calc/positioning/fit (then shapes), visible connect/disconnect source patches, Undo, Save/reopen, XeLaTeX PDF and one C-backed Russian syntax/parameter/help search. Explicitly audit five axes installed/project-loaded/engine-compatible/tool/help; tikz_libraries.rs currently deliberately passes Evidence::Unknown for the installed axis in Studio, so do not misreport it as a verified installation probe. Do not resurrect obsolete B41 workflows or invent a separate TeX implementation. N5 physical Windows10 with user-installed MiKTeX and M1/M4 with external XeLaTeX, GUI, PDF fonts, packaging/install UX remain NOT_RUN and mandatory for actual personal release. Advanced N4 packs must not interrupt N2/N3/N5.

No new PR, production edit, workflow_dispatch/rerun or merge made in this check. No new main commit was created to preserve exact-head evidence. Future accepted N2 functionality change must synchronize code/tests/plans/insights/CHANGELOG; release documentation README/ROADMAP still contains historical W01 wording and should be corrected with that substantive change, not a separate docs-only CI churn.

N2 code-grounded integration contract — 2026-11-02 post-merge audit

Fresh source/release evidence: main 3fb25ca70ce94ad9a5b1cd63606ad45390f1f68b, #91/#92 merged, zero open PRs. On the exact main, Rust CI 41509675268 3/3 PASS, D QA 41509675312 7/7 PASS, actual X11 41509674984 PASS, hosted MiKTeX 41509675169 2/2 PASS, N1 XeLaTeX 41509674961 PASS. Downloaded current X11 artifact 13171963063 independently: report source SHA matches main, 69/69 manifest SHA correct; real GUI F1, Inspector Apply/Undo, two-file Open/dirty Cancel images viewed, TeX/PDF/font records verified and PDF rasterized. This is real N1 Linux/X11 acceptance only, not N2 or physical target acceptance.

N2 exact-code gap, not an unexplained failed CI: current Studio Library panel explicitly passes Evidence::Unknown into capabilities_for_library on every render; the independent installed axis is never actually probed for the four C-catalogue TikZ libraries, although broader package inventory uses a separate cached Registry::status(&tex) discovery interface. Thus a UI claim of installed=CONFIRMED for these libraries is NOT IMPLEMENTED. The independent project-loaded/engine-target/tool/help fields already exist and must remain separate. Do not launch kpsewhich per egui frame or turn XeLaTeX existence into a compilation PASS. One-time/bounded, explicit configured-engine library-file lookup may safely supply Confirmed/Absent/Unknown if C/A contracts permit; otherwise keep Unknown honestly.

N2 scope discrepancy: C catalogue and source patcher limit safe automatic adapters to exactly four names: arrows.meta, positioning, calc, fit. The roadmap also names shapes; it is not currently a supported independent C catalogue library/connect action. Only arrows.meta has a native B drawing tool contribution; other libraries are source-first with truthful tool_implemented=ABSENT. Do not pretend that connected package = complete graphical adapter.

One substantive next implementation+acceptance block, not CI churn: agree N2 release slice before code; cover either (a) four currently implemented library adapters as explicit first N2 subrelease, with shapes recorded separately, OR (b) add supported shapes through C-owned catalogue/source patch within the same vertical. Then make Studio's five axes genuinely evidence-based (Unknown allowed), exercise actual GUI Connect→visible minimal preamble diff→Undo→Disconnect→Save/Open→external XeLaTeX PDF on independent sources with opaque macros/CRLF; corroborate one offline Russian C-derived syntax/parameter/help path for N3. Reuse existing testing architecture, but lease current app tree and capture original screenshots/TeX/PDF/logs+SHA. No old B41 X11 drivers, no extra CI-only micro-PR, no product change without B/C ownership agreement. On accepted code update synchronize tests, plans, insights, CHANGELOG and the now-historical PENDING N1 headings. Physical Win10/M1/M4 and installer remain NOT_RUN.

N2 cross-contract integration discovery — 2026-11-03, main 3fb25ca

A material integration pitfall, not another B-only UI tweak. At exact current main, `tikz_libraries.rs` passes `Evidence::Unknown` for every C library. A naïve fix `probe_package("tikzlibrary" + library.name + ".code.tex")` would be wrong: the declared `arrows.meta` library is resolved through `pgflibraryarrows.meta.code.tex` on the local TeX Live 2025/dev installation (verified via read-only `kpsewhich`); `tikzlibraryarrows.meta.code.tex` is not present there. By contrast, `positioning`, `calc`, `fit`, and `shapes.geometric` use `tikzlibrary.code.tex`. These observations concern this local TeX Live only, not the user's MiKTeX/Windows or Mac. Do not infer per-library installation from `tikz.sty` or fabricate filename conventions. Model a verified catalogue-owned mapping/list of probe files per library, and test the special PGF-level arrows.meta case. Keep installation `UNKNOWN` when evidence absent or selected-engine probe unavailable; do not convert a lookup failure to ABSENT.

Separate current source-code defect to address in the SAME substantive N2 integration: `Registry::status(&tex)` at `crates/tikzarium-extensions/src/lib.rs:214-218` first requires `tex.kpsewhich.is_some()`, then maps `tex.package_file(...).is_some()` to true/false. But `TexEnvironment::probe_package` (core `discovery.rs:173-220`) intentionally uses a safe `findtexmf` next to the selected MiKTeX engine and a near-engine `kpsewhich` for TeX Live, with three outcomes `Present/Missing/Unavailable`. Thus a MiKTeX installation with usable `findtexmf` but no `kpsewhich` can be incorrectly displayed UNKNOWN, while probe Unavailable can be mislabeled NotLocated. This is a static code-path defect, not yet a reproduced physical MiKTeX user failure. Correct the registry bridge by mapping the existing tri-state `PackageProbe` (Present→Some(true), Missing→Some(false), Unavailable→None), eliminating the unnecessary global kpsewhich precondition; regression test explicit MiKTeX findtexmf-only and unknown-probe cases. Do not call any probe from `egui` frame repaint. Cache bounded read-only results once for an explicitly selected engine, refresh on user's request, and never install or silently substitute TeX. Consider existing `probe_package` synchronous process lifetime/bounds before adding more lookups.

Upstream shapes scope correction: the current PGF manual §71 calls umbrella `shapes` a compatibility-only library and recommends direct sublibraries such as `shapes.geometric` and `shapes.misc`. N2 should expose a useful sublibrary with its actual `\usetikzlibrary{shapes.geometric}` declaration, documented diamond/ellipse example, requirement/help entry and independent tool=ABSENT until a real adapter exists; do not claim plain `shapes` or a native shape tool from catalogue presence. This refines, rather than drops, the ROADMAP's shapes family.

ONE combined release slice, no CI-only PR: (1) correct A/C discovery/probe truthfulness and C per-library probe metadata, including the arrows.meta exception; (2) integrate cached independent installed/project-loaded/engine-target/tool/help into Studio with reversible source patches for existing four libraries plus one manual-verified `shapes.geometric` entry if release scope allows; (3) verify real current-Studio X11 library click → Connect → minimal preamble diff → Undo/Disconnect → Save/Open → external XeLaTeX PDF, Cyrillic/opaque/CRLF preservation and one offline Russian C-help search; (4) original source/PDF/PNG/log/probe provenance and SHA manual review; exact-head CI then expected_head_sha merge and separate postmerge; update code+tests+plans+insights+CHANGELOG together. Do not reactivate old B41 scripts, clone TeX parsers, or mark physical Win10/M1/M4 PASS. If adding shapes.geometric would delay an otherwise complete four-library N2 slice, explicitly split into N2a (four libraries + truthful install evidence) and N2b (shapes.geometric), not indefinitely postpone N5 physical release.

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