Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
d3d3208
feat(B42): TikZ-native studio tool rail, responsive panel contract an…
i-shutov Nov 2, 2026
d0e7514
feat(B42): preserve TikZ pointer handlers while moving tool palette o…
i-shutov Nov 2, 2026
a7e000b
feat(B42): native vector icon rail and grouped floating TikZ tool pal…
i-shutov Nov 2, 2026
e514a54
feat(B42): connect icon-group palettes, contextual docks and clean st…
i-shutov Nov 2, 2026
1244b64
test(B42): user Windows Server external MiKTeX offline PDF and locked…
i-shutov Nov 2, 2026
77ff306
docs+ci(B42): manual user Windows Server MiKTeX workflow and studio U…
i-shutov Nov 2, 2026
8b4fea3
style(B42): apply exact hosted rustfmt diffs across Studio, vector ic…
i-shutov Nov 2, 2026
05006f8
style(B42): complete host rustfmt exact whitespace for icon Studio
i-shutov Nov 2, 2026
d355c0c
test(B42): real X11 Studio icon-palette screenshots with explicit boo…
i-shutov Nov 2, 2026
0415785
ux(B42): readable Midnight studio, registry-driven package palette an…
i-shutov Nov 2, 2026
c43d5f8
docs(B42): record reviewed real X11 UX defects and corrected Studio a…
i-shutov Nov 2, 2026
c07df47
style(B42): rustfmt normalized registry-driven palettes and PDF focus…
i-shutov Nov 2, 2026
bf4b1ef
ux(B42): full-size TikZ drawing workspace or full-size PDF, code alwa…
i-shutov Nov 2, 2026
0f51a33
fix(B42): group C-registry palette inputs into typed context for stri…
i-shutov Nov 2, 2026
fdf4e07
ux(B42): remove inspector clutter until a native TikZ tool is selected
i-shutov Nov 2, 2026
ea1d8cf
test(B42): exercise all six Studio guide pointer handlers with real e…
i-shutov Nov 2, 2026
e631406
docs(B42): record Studio real-handler event gate and evidence limits
i-shutov Nov 2, 2026
89eda38
docs(B42): record Studio real-handler event gate and evidence limits
i-shutov Nov 2, 2026
2909e46
fix(B42): anchor tool palette to resized source pane and clear hidden…
i-shutov Nov 2, 2026
312ffd8
test(B42): assert palette tracks actual resized source-pane boundary
i-shutov Nov 2, 2026
5b8afcd
docs(B42): record resized panel UX fix, real event coverage and X11 l…
i-shutov Nov 2, 2026
8e26459
docs(B42): record resized panel UX fix, real event coverage and X11 l…
i-shutov Nov 2, 2026
1245894
style(B42): apply exact hosted rustfmt diagnostic to Studio gesture test
i-shutov Nov 2, 2026
01b626e
fix(B42): make F1 on/off visible in contextual Studio dock and test r…
i-shutov Nov 2, 2026
8faa298
fix(B42): restore Properties tab when F1 closes Studio contextual help
i-shutov Nov 2, 2026
d59be95
docs(B42): specify F1 Studio toggle acceptance and source-integrity gate
i-shutov Nov 2, 2026
8887729
docs(B42): specify F1 Studio toggle acceptance and source-integrity gate
i-shutov Nov 2, 2026
f227381
fix(B42): resolve exact rustfmt block in Studio F1 event-frame test
i-shutov Nov 2, 2026
f56b3e1
fix(B42): audit every embedded PDF font and Cyrillic extraction in us…
i-shutov Nov 2, 2026
4b7eb68
docs(B42): record exact CI diagnosis, reviewed X11 evidence and Windo…
i-shutov Nov 2, 2026
3fcb4ad
docs(B42): record exact CI diagnosis, reviewed X11 evidence and Windo…
i-shutov Nov 2, 2026
061c0ce
test(B42): parse dedicated Windows Server QA script under hosted Powe…
i-shutov Nov 2, 2026
dadd05b
fix(B42): fail closed on partial user-server font/text or requested R…
i-shutov Nov 2, 2026
be22ece
fix(B42): make scratch Save destination real and cover egui Save event
i-shutov Nov 2, 2026
ba1df56
style(B42): match exact hosted rustfmt in Studio Save event test
i-shutov Nov 2, 2026
ac8f609
test(B42): drive native Studio rail and six C tool icons with egui ev…
i-shutov Nov 2, 2026
cfa0d8d
fix(B42): match hosted rustfmt diagnostic for native palette event test
i-shutov Nov 2, 2026
1aa79bb
fix(B42): reserve full-width status bar before source and guide panels
i-shutov Nov 2, 2026
8792995
fix(B42): apply exact hosted rustfmt diagnostics to Studio status test
i-shutov Nov 2, 2026
ee6ba68
test(B42): settle foreground palette hit testing after opening group
i-shutov Nov 2, 2026
c7f4aa3
fix(B42): unify Studio Help toggle and safe dirty-Open scratch Save
i-shutov Nov 2, 2026
91e2d82
style(B42): apply exact hosted rustfmt diagnostics for Help event QA
i-shutov Nov 2, 2026
cc33930
test(I61): rebase real Studio source-to-PDF QA onto frozen B42 and re…
i-shutov Nov 2, 2026
f3aa1ea
test(I61): replace legacy B41 automatic X11 gates with exact B42 sour…
i-shutov Nov 2, 2026
ca05d8b
test(I62): exercise real F1, native/visual Undo, CRLF Open/Reopen and…
i-shutov Nov 2, 2026
10c6f17
fix(I62 QA): escape TeX fixture commands while retaining real CRLF bytes
i-shutov Nov 2, 2026
e4f6818
fix(I62 QA): restore exactly doubled literal TeX escapes with real CR…
i-shutov Nov 2, 2026
a6e1da2
fix(B42): retain File path focus in egui popup with event-frame regre…
i-shutov Nov 2, 2026
f1e16af
style(B42): apply exact rustfmt output for File popup event regression
i-shutov Nov 2, 2026
09a4df5
fix(B42): preserve unit match branches for Save As action
i-shutov Nov 2, 2026
4999df5
integrate(I63): lease frozen B42 File Open fix into full I61 real X11…
i-shutov Nov 2, 2026
74b67c1
qa(I63): enforce both B42 tree leases and preserve File Open focus ev…
i-shutov Nov 2, 2026
11f6ba8
qa(I64): real pinned C-backed inspector draft Apply/Undo in N1 X11 ve…
i-shutov Nov 2, 2026
1306ab0
Integrate I64 actual B42 N1 Linux/X11 full authoring acceptance
i-shutov Nov 2, 2026
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
63 changes: 63 additions & 0 deletions .github/workflows/b42-studio-x11.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: B42 real Studio icon palettes screenshot audit (bootstrap only)
on:
pull_request:
branches: [main]
paths:
- 'crates/tikzarium-app/**'
- 'scripts/qa_b42_studio_x11.py'
- '.github/workflows/b42-studio-x11.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
actual-studio:
runs-on: ubuntu-24.04
timeout-minutes: 45
env:
CARGO_PROFILE_DEV_DEBUG: '0'
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
- uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec
with:
toolchain: '1.91.0'
- name: Install hosted X11 desktop prerequisites (not physical OS)
run: |
sudo apt-get update -q
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
xvfb xauth openbox xdotool imagemagick libgl1-mesa-dri libglx-mesa0 \
libxkbcommon-dev libxkbcommon-x11-dev libx11-dev libxi-dev \
libxcursor-dev libxrandr-dev libudev-dev
- name: Parse user-server PowerShell audit without running it
shell: bash
run: |
# This only checks syntax on the hosted Linux runner.
# It does not run MiKTeX or certify the dedicated Windows Server.
pwsh -NoProfile -NonInteractive -Command '
$tokens=$null; $errors=$null
[System.Management.Automation.Language.Parser]::ParseFile(
"scripts/tools/qa_windows_server_user.ps1",
[ref]$tokens, [ref]$errors) | Out-Null
if($errors.Count -ne 0) {
$errors | ForEach-Object { Write-Error $_ }
exit 1
}
Write-Host "PowerShell AST syntax PASS; Windows Server runtime NOT_RUN"
'
- name: Compile the actual Rust/egui executable from locked sources
run: |
cargo build --locked -p tikzarium-app --bin tikzarium-app
git diff --exit-code -- Cargo.lock
- name: Capture actual Studio and floating grouped palette from X11
run: |
mkdir -p "$RUNNER_TEMP/b42-runtime"
chmod 700 "$RUNNER_TEMP/b42-runtime"
export XDG_RUNTIME_DIR="$RUNNER_TEMP/b42-runtime"
xvfb-run -a -s '-screen 0 1440x900x24 +extension GLX +render -noreset' \
bash -c 'openbox --sm-disable >/tmp/b42-openbox.log 2>&1 & python3 scripts/qa_b42_studio_x11.py --app "$GITHUB_WORKSPACE/target/debug/tikzarium-app" --out "$RUNNER_TEMP/b42-evidence"'
- name: Upload actual screenshots and explicit NOT_RUN ledger
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: b42-real-studio-${{ github.run_id }}
path: ${{ runner.temp }}/b42-evidence/
if-no-files-found: warn
4 changes: 2 additions & 2 deletions .github/workflows/i46-b34-dirty-open-x11.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Legacy B41 coordinate profile; the current B42 Studio uses I61 real-X11 source/PDF QA.
# Historical B41 branch/explicit dispatch remain available with exact B41 provenance.
name: I51 B37 real X11 dirty-Open preserve user TeX and PDF
on:
push:
Expand All @@ -10,7 +12,6 @@ on:
- qa/i54-b39-n2-n3-desktop-reaccept
- qa/i60-b41-inspector-real-x11
- b41-egui-pinned-parameter-apply
- main
paths:
- '.github/workflows/i46-b34-dirty-open-x11.yml'
- 'scripts/qa_i46_dirty_open_x11.py'
Expand All @@ -30,7 +31,6 @@ on:
- b40-egui-source-undo-transaction-fence
- b/b32-safe-open-source-undo-20261101
- b/b36-compact-pdf-focus
- main
paths:
- '.github/workflows/i46-b34-dirty-open-x11.yml'
- 'scripts/qa_i46_dirty_open_x11.py'
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/i53-b38-live-libraries.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Legacy B41 coordinate profile; the current B42 Studio uses I61 real-X11 source/PDF QA.
# Historical B41 branch/explicit dispatch remain available with exact B41 provenance.
name: I53 B39 actual X11 library Connect Disconnect PDF Undo and GUI Reopen
on:
push:
Expand All @@ -8,7 +10,6 @@ on:
- feat/b38-n2-n3-inspector-20261101
- qa/i60-b41-inspector-real-x11
- b41-egui-pinned-parameter-apply
- main
workflow_dispatch:
permissions:
contents: read
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/i57-n2-four-live-x11.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Legacy B41 coordinate profile; the current B42 Studio uses I61 real-X11 source/PDF QA.
# Historical B41 branch/explicit dispatch remain available with exact B41 provenance.
name: I57 N2 four actual X11 library source PDF Undo Open and C help
on:
pull_request:
branches: [main, b40-egui-source-undo-transaction-fence, b41-egui-pinned-parameter-apply]
branches: [b40-egui-source-undo-transaction-fence, b41-egui-pinned-parameter-apply]
paths:
- '.github/workflows/i57-n2-four-live-x11.yml'
- 'scripts/qa_i57_four_libs_x11.py'
Expand All @@ -12,7 +14,7 @@ on:
- 'crates/**'
- 'Cargo.lock'
push:
branches: [main, qa/i58-b40-source-history-x11, qa/i60-b41-inspector-real-x11, b41-egui-pinned-parameter-apply]
branches: [qa/i58-b40-source-history-x11, qa/i60-b41-inspector-real-x11, b41-egui-pinned-parameter-apply]
paths:
- '.github/workflows/i57-n2-four-live-x11.yml'
- 'scripts/qa_i57_four_libs_x11.py'
Expand Down
86 changes: 86 additions & 0 deletions .github/workflows/i61-b42-studio-x11.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# B42 six native GUI gestures, persisted source, external XeLaTeX PDF.
# Exact B42 source-tree lease is fail-closed. Current Linux/X11 probe includes real Open/Undo/F1; Inspector Apply and physical OS remain NOT_RUN until independently accepted.
name: I61 B42 real Studio icon-to-native-source/PDF (independent D QA)
on:
push:
branches: [qa/i61-b42-studio-source-pdf, main]
paths:
- '.github/workflows/i61-b42-studio-x11.yml'
- 'scripts/qa_i61_b42_studio_x11.py'
- 'scripts/qa_n1_desktop.py'
- 'scripts/tests/test_qa_i61_studio_fonts.py'
- 'crates/**'
- 'Cargo.toml'
- 'Cargo.lock'
pull_request:
branches: [main]
paths:
- '.github/workflows/i61-b42-studio-x11.yml'
- 'scripts/qa_i61_b42_studio_x11.py'
- 'scripts/qa_n1_desktop.py'
- 'scripts/tests/test_qa_i61_studio_fonts.py'
- 'crates/**'
- 'Cargo.toml'
- 'Cargo.lock'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: i61-studio-${{ github.event.pull_request.head.sha || github.sha }}
cancel-in-progress: true
jobs:
studio-full-vertical:
runs-on: ubuntu-24.04
timeout-minutes: 45
env:
CARGO_PROFILE_DEV_DEBUG: '0'
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec
with:
toolchain: '1.91.0'
- name: Exact B42 app source-tree lease (fail closed before GUI)
run: |
test "$(git rev-parse HEAD:crates/tikzarium-app/src)" = '72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb'
# Catch disagreement between workflow and Python QA before heavy TeX install.
grep -Fqx "APP_TREE = \"$(git rev-parse HEAD:crates/tikzarium-app/src)\"" scripts/qa_i61_b42_studio_x11.py
echo "TIKZARIUM_APP_TREE_SHA=$(git rev-parse HEAD:crates/tikzarium-app/src)" >> "$GITHUB_ENV"
echo "TIKZARIUM_SOURCE_SHA=$(git rev-parse HEAD)" >> "$GITHUB_ENV"
git diff --exit-code -- Cargo.lock
- name: Font-audit offline contract tests (NOT GUI)
run: python3 -m unittest discover -s scripts/tests -p test_qa_i61_studio_fonts.py -v
- name: Hosted Linux/X11 and external TeX Live XeLaTeX prerequisites
run: |
# Exact f3aa1ea run cancelled after 45min downloading 129MB apt packages.
# Avoid the observed severely slow Azure archive and bound HTTP stalls.
if test -f /etc/apt/apt-mirrors.txt; then
sudo sed -i 's#http://azure.archive.ubuntu.com/ubuntu/#http://archive.ubuntu.com/ubuntu/#g' /etc/apt/apt-mirrors.txt
fi
sudo apt-get -o Acquire::Retries=2 -o Acquire::http::Timeout=25 update -q
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=2 -o Acquire::http::Timeout=25 install -y --no-install-recommends \
xvfb xauth openbox xdotool xclip imagemagick libgl1-mesa-dri libglx-mesa0 \
libxkbcommon-dev libxkbcommon-x11-dev libx11-dev libxi-dev \
libxcursor-dev libxrandr-dev libudev-dev \
texlive-xetex texlive-latex-extra texlive-pictures poppler-utils fonts-dejavu-core
xelatex --version | head -n 2
command -v pdffonts
- name: Compile locked production egui binary, no QA stub
run: |
cargo build --locked -p tikzarium-app --bin tikzarium-app
git diff --exit-code -- Cargo.lock
- name: Real group icon, all six pointers, source Save and XeLaTeX PDF
run: |
mkdir -p "$RUNNER_TEMP/i61-runtime"
chmod 700 "$RUNNER_TEMP/i61-runtime"
export XDG_RUNTIME_DIR="$RUNNER_TEMP/i61-runtime"
xvfb-run -a -s '-screen 0 1440x900x24 +extension GLX +render -noreset' \
bash -c 'openbox --sm-disable >/tmp/i61-openbox.log 2>&1 & python3 scripts/qa_i61_b42_studio_x11.py --app "$GITHUB_WORKSPACE/target/debug/tikzarium-app" --out "$RUNNER_TEMP/i61-evidence"'
- name: Upload actual GUI screenshots, saved source, PDF, log and SHA ledger
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: i61-b42-source-pdf-${{ github.run_id }}
path: ${{ runner.temp }}/i61-evidence/
if-no-files-found: warn
4 changes: 2 additions & 2 deletions .github/workflows/n1-desktop-smoke.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Legacy B41 coordinate profile; the current B42 Studio uses I61 real-X11 source/PDF QA.
# Historical B41 branch/explicit dispatch remain available with exact B41 provenance.
name: I51 B37 real X11 native TikZ six gestures, held Undo and PDF
on:
push:
Expand All @@ -12,7 +14,6 @@ on:
- qa/i54-b39-n2-n3-desktop-reaccept
- qa/i60-b41-inspector-real-x11
- b41-egui-pinned-parameter-apply
- main
paths:
- '.github/workflows/n1-desktop-smoke.yml'
- 'scripts/qa_n1_desktop.py'
Expand All @@ -35,7 +36,6 @@ on:
- b/b32-safe-open-source-undo-20261101
- feat/b27-egui-undo-held-pointer-20261101
- b/b31-compact-xelatex-fit
- main
paths:
- '.github/workflows/n1-desktop-smoke.yml'
- 'scripts/qa_n1_desktop.py'
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/qa-selfhosted-winserver.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Manual user Windows Server MiKTeX QA (not Win10)

on:
workflow_dispatch:
inputs:
expected_main_sha:
description: "The exact reviewed main SHA; no PR code on persistent runner"
required: true
type: string

permissions:
contents: read

jobs:
user-windows-server:
if: github.ref == 'refs/heads/main'
runs-on: [self-hosted, Windows, X64, tikzarium-winserver]
timeout-minutes: 55
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
persist-credentials: false
- name: Verify expected main SHA before any user-server execution
shell: pwsh
env:
EXPECTED_SHA: ${{ inputs.expected_main_sha }}
run: |
$actual = (git rev-parse HEAD).Trim()
if ($actual -cne $env:EXPECTED_SHA -or $actual -cne '${{ github.sha }}') {
throw 'Exact main SHA lease mismatch; refuse to run on user server'
}
- name: User MiKTeX offline proof and locked Rust test
shell: pwsh
run: |
./scripts/tools/qa_windows_server_user.ps1 -OutputDir "$env:RUNNER_TEMP\tikzarium-user-miktex" -CheckRust
- name: Upload honest evidence including failure
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: tikzarium-user-winserver-${{ github.run_id }}
path: ${{ runner.temp }}/tikzarium-user-miktex/
if-no-files-found: warn
39 changes: 38 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,41 @@
## Unreleased — I60 independent B41 real-X11 inspector acceptance (PR #90; PDF preview/F1 recheck pending)
# Changelog

## Unreleased — I64 real pinned Inspector Apply → one minimal TikZ source edit → Undo (PENDING)

- Extend the SAME I61 hosted Linux/X11 six gestures/Save/Open/CRLF/F1/Undo/XeLaTeX script with real selected Node property TextEdit and pinned shared-C Apply, prove draft-only source integrity, one-command patch and exact visual Undo. No new workflow/PR/B code. I63 earlier head SUCCESS and original 64/64 SHA/manual reviewed; new I64 head acceptance pending, physical Win10/M1/M4 NOT_RUN.

## Unreleased — I63 dual B42 source-tree lease & real File Open focus snapshots

- Pin workflow + script to current B42 app/source Git tree `72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb`; reject mismatches before TeX Live installation. Capture real focus/Ctrl+A/paste screenshots while retaining all six native gestures, source/Undo/Open/PDF assertions. NOT_RUN full GUI and physical hosts until exact-head artifact audit.

## Unreleased — I63 B42 P0 File Open integration lease (actual X11 NOT_RUN at commit)

- Merge frozen B42 File TextEdit click-to-edit production repair into existing stacked #92 as a second-parent exact SHA, preserving all prior D QA changes; move I61 app-source-tree guard to `72499c6e31d4cf6a2a36d16fb7bc8b10a9d66acb`. Do not disable source-tree provenance or replace external TeX Live with MiKTeX in Linux/X11 QA.
- B42 exact-head Rust/Clippy/D QA/hosted MiKTeX/N1 XeLaTeX/fonts passed before re-lease; product popup fix is UNIT_EVENT until real two-file Open/edit/Save/reopen and dirty Cancel succeed with original PNG/source/PDF hashes reviewed. Inspector Apply and physical Win10/M1/M4 remain NOT_RUN. No merge to main.

## Unreleased — I62 real N1 GUI Help, Undo and two-file I/O acceptance (QA ONLY)

- Extend existing stacked #92 independent Linux/X11 driver to test actual F1 open/close, TextEdit Ctrl+Z, visual Undo, second CRLF/opaque-source GUI Open/Save/Reopen and dirty Open cancel; separate NOT_RUN until exact-head CI and manual artifacts. No B/C/A production edits.
- Diagnose exact I61 QA head f3aa1ea7 cancellation before GUI (45-minute Azure apt mirror stall); use canonical Ubuntu archive and bounded package retries/HTTP timeouts, never replace external XeLaTeX or waive evidence.

## Unreleased — I61 independent real B42 acceptance (six-gesture subvertical PASS; N1 NOT_ACCEPTED)

- CI transition: historical B41 I51/I53/I57 fixed-tree X11 workflows remain manually runnable at matching B41 revision, no automatic false-red main runs; I61 exact-B42 six-gesture/source/PDF regression now runs for main PRs and pushes. Real B42 Open/Undo/Apply/F1 and physical targets are still unaccepted release gates.

- Re-lease existing #92 stacked QA onto B42 production HEAD `91e2d8201cd0` with native C six-gesture X11 driver; no changes to A/B/C/E/F production. Exact app-tree provenance remains fail-closed.
- Replace broken doubled-escape `pdffonts` parser with all-font embedding audit; four offline positive/negative tests run before installing external XeLaTeX. Actual GUI source/Save/Open/Undo/help/PDF is NOT_RUN until new exact-head artifact acceptance. Physical Win10/Mac ARM NOT_RUN.


## Unreleased — B42 redesigned Studio and dedicated user's MiKTeX Windows Server QA (PENDING)

- Follow-up from real B42 X11 screenshot review: restore a dark Midnight default and readable 14pt source/body fonts, relocate grouped palette away from source, search the live C registry instead of hard-coded packages, and keep manual PDF zoom stable when selecting PDF. Exact-head reacceptance PENDING.

- Replaced repeated long tool buttons with native egui vector icons in four grouped floating palettes. No font-file asset or second PGF renderer; native C-catalogue commands and source-first semantics retained.
- Added a concise icon toolbar, permanently editable TeX beside the center drawing/PDF, independent Properties/Libraries/Help tabs, persistent workspace preferences and collapsed-by-default diagnostics. Classic UI remains temporarily available for regression comparisons.
- Added a manual main-SHA-gated GitHub Actions test for a dedicated user Windows Server runner and a no-auto-install MiKTeX/locked-Rust proof script. Runner connectivity and physical Windows10/M1/M4 are NOT_RUN; this is not GUI Session proof.
- Exact-head Rust/GUI/Windows CI and separate post-merge CI NOT_RUN at authoring. No release claim.

d — I60 independent B41 real-X11 inspector acceptance (PR #90; PDF preview/F1 recheck pending)

- Extend the same stacked I60 QA gate to re-run existing I46 dirty Open, I47 six held-pointer gestures, I53 positioning/help and I57 four-library real-X11 workflows on the **exact B41 app/src tree**, preserving fail-closed source/PDF/hash predicates and explicitly provisional B40-derived coordinates. Old head X11 failures remain NOT_RUN until new exact QA head plus manual artifact review. No production-code changes.
- Add a separate exact-B41-source-tree Linux/X11 workflow exercising the **real egui window**: native Circle pointer → actual property TextEdit → unchanged source while draft pending → pinned C-backed Apply changing only selected command and metadata → native TextEdit Ctrl+Z history fence → visual Undo → Save/Open two distinguishable files including a CRLF/opaque Cyrillic source, followed by GUI external XeLaTeX PDF. Captures immutable sources, PDF, screenshots and per-file SHA-256; no production Rust/C or external TeX package installation changes.
Expand Down
Loading
Loading