Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
337 commits
Select commit Hold shift + click to select a range
dc8ce6f
key.ui.fx: tacletmatch: style the redesigned dialog scene with the ac…
wadoon Oct 8, 2026
1b5d160
key.ui.fx: lemmaorigin: the origin-visualizer self test prefers a nod…
wadoon Oct 8, 2026
92cf26a
Merge branch 'weigl/ocfx-docking' (tab context menu, maximize, named …
wadoon Oct 8, 2026
d149b27
key.ui.fx: joinmerge: show the join dialog for the screenshot window
wadoon Oct 8, 2026
dc6e8fa
Merge branch 'weigl/ocfx-seam' (WindowUserInterfaceControlF seam, com…
wadoon Oct 8, 2026
1331323
Merge branch 'weigl/ocfx-tacletmatch' (TacletMatchDialogF, classic va…
wadoon Oct 9, 2026
73fa870
Merge branch 'weigl/ocfx-joinmerge' (JoinDialogF, merge rule completi…
wadoon Oct 9, 2026
1c0d406
key.ui.fx: spotless: reorder MergeRuleCompletionF import alphabetically
wadoon Oct 9, 2026
ca8cd1d
Merge branch 'weigl/ocfx-lemmaorigin' (OriginLabelsF, OriginTermLabel…
wadoon Oct 9, 2026
a225202
key.ui.fx: smalldialogs: profile loading options, soundiness report d…
wadoon Oct 9, 2026
353e88a
Merge branch 'weigl/ocfx-smalldialogs' (help F1, profile loading opti…
wadoon Oct 9, 2026
6d7d7d0
key.ui.fx: termmenu: pure-Java model of the sequent context menu (Seq…
wadoon Oct 9, 2026
6d250c2
key.ui.fx: termmenu: headless unit test of SequentMenuModelF (structu…
wadoon Oct 9, 2026
4dd998b
key.ui.fx: termmenu: JavaFX shell for the sequent context menu (Seque…
wadoon Oct 9, 2026
74a2434
key.ui.fx: termmenu: headless unit test of SequentMenuModelF (structu…
wadoon Oct 9, 2026
3284ae3
key.ui.fx: termmenu: sequent view context-menu hit test (right-click …
wadoon Oct 9, 2026
32db1ee
key.ui.fx: termmenu: key.fx.verify.termmenu headless self test of the…
wadoon Oct 9, 2026
2c7a6e5
key.ui.fx: termmenu: wire completeAndApplyTacletMatch to the ported t…
wadoon Oct 9, 2026
2abf34d
key.ui.fx: termmenu: extend tacletmatch self test with the seam-dispa…
wadoon Oct 9, 2026
2c5e3a3
key.ui.fx: termmenu: route load failures through the notification cen…
wadoon Oct 9, 2026
756634f
Merge branch 'weigl/ocfx-termmenu' (P0 sequent term context menu: Seq…
wadoon Oct 9, 2026
f7f00af
key.ui.fx: menu: MP1 Proof menu parity (Abandon Proof, search section…
wadoon Oct 9, 2026
5dc3c3f
chore: ignore the .hermes/ tool cache directory
wadoon Oct 9, 2026
7b9ed3a
key.ui.fx: menu: MP2 Automation submenu parity (4 proof-macro entries)
wadoon Oct 9, 2026
8e9f6de
key.ui.fx: menu: MP3a View menu parity — wire Pretty Print + Unicode,…
wadoon Oct 9, 2026
7910a8d
key.ui.fx: menu: MP3b View menu parity — Select Goal submenu, Back/Fo…
wadoon Oct 9, 2026
f98f63e
key.ui.fx: menu: MP3c View menu parity — extend menu-parity self test…
wadoon Oct 9, 2026
af43ed6
chore: ignore the .hermes/ tool cache directory
wadoon Oct 9, 2026
1f2758b
key.ui.fx: menu: MP4 Options menu parity — 5 settings toggles, real S…
wadoon Oct 9, 2026
f01f131
key.ui.fx: menu: MP5 File+About menu parity — Edit Last Opened File, …
wadoon Oct 9, 2026
81f71bd
Merge branch 'weigl/ocfx-menuparity' (main-menu parity: Proof/View/Op…
wadoon Oct 9, 2026
d4cf676
key.ui.fx: menu: MP7a — wire Minimize Interaction to the proof contro…
wadoon Oct 9, 2026
2b1a5d3
key.ui.fx: menu: MP7b — right-click proof-macro popup (Swing CurrentG…
wadoon Oct 9, 2026
459eef3
key.ui.fx: menu: MP7c — arm the AutoSaver from the Auto Save Proofs t…
wadoon Oct 9, 2026
16fad82
key.ui.fx: menu: MP7d — correct stale menu notes: Ensure Source Consi…
wadoon Oct 9, 2026
088f124
key.ui.fx: menu: MP7b — fix two follow-up bugs: re-add Start/Stop Aut…
wadoon Oct 9, 2026
0015b3a
Merge branch 'weigl/ocfx-menuparity-polish' (MP7: wire Minimize Inter…
wadoon Oct 9, 2026
7edc849
key.ui.fx: menu: MP8a — wire Apply rules automatically here (focus_au…
wadoon Oct 9, 2026
65d0932
key.ui.fx: menu: MP8b — wire the term-menu Strategy Macros section (S…
wadoon Oct 9, 2026
f8e3c3e
key.ui.fx: menu: MP8c — wire the SMT section: each solver union runs …
wadoon Oct 9, 2026
8791134
key.ui.fx: menu: MP8 — add the key.fx.verify.termmenuwiring self test…
wadoon Oct 9, 2026
95447c0
key.ui.fx: menu: MP8b — fix the right-click verify for the new Strate…
wadoon Oct 9, 2026
e2015d2
Merge branch 'weigl/ocfx-termmenu' (MP8: wire term-menu focus_auto_mo…
wadoon Oct 9, 2026
91de410
key.ui.fx: extension: MP9.0 — FX-native KeYGuiExtensionF SPI (marker …
wadoon Oct 9, 2026
bb659b2
Merge branch 'weigl/ocfx-extensions' (MP9.0: FX-native KeYGuiExtensio…
wadoon Oct 9, 2026
2336fea
key.ui.fx: drawer: Java port of the TornadoFX Drawer (DrawerF/DrawerI…
Oct 9, 2026
bc8e1ec
Merge branch 'weigl/ocfx-drawer' (DrawerF: Java port of the TornadoFX…
wadoon Oct 9, 2026
1ea1315
key.ui.fx: drawer: MP10a — drawered main area (west/east/south Drawer…
Oct 9, 2026
ab29396
key.ui.fx: drawer: MP10b — extension left-panel tabs become west draw…
Oct 9, 2026
4f6dae9
Merge branch 'weigl/ocfx-drawerlayout' (MP10: main window west/east/s…
wadoon Oct 9, 2026
8da44d7
key.ui.fx: extension: MP9.1-9.6 scaffold — six empty keyext.<name>.fx…
Oct 9, 2026
8bf8058
Merge branch 'weigl/ocfx-extfx-scaffold' (MP9.1-9.6 scaffolding: six …
wadoon Oct 9, 2026
23d1dcc
keyext.proofmanagement.fx: MP9.6 — JavaFX port of the proof managemen…
Oct 9, 2026
e51c4d4
keyext.isabelletranslation.fx: MP9.3 — JavaFX port of the Isabelle tr…
Oct 9, 2026
e57152f
keyext.slicing.fx: MP9.4 — JavaFX port of the slicing extension (KeYG…
Oct 9, 2026
8b362a9
keyext.exploration.fx: MP9.2 — JavaFX port of the exploration extensi…
Oct 9, 2026
984f117
keyext.caching.fx: MP9.1 — JavaFX port of the caching extension (KeYG…
Oct 9, 2026
b6f7334
keyext.exploration.fx: MP9.2 icon review — ikonli FontAwesome glyphs …
Oct 9, 2026
73b07e8
keyext.caching.fx: MP9.1 icon review — ikonli FontAwesome DATABASE/SE…
Oct 9, 2026
ac4dbdf
keyext.ui.testgen.fx: MP9.5 — JavaFX port of the test-generation exte…
Oct 9, 2026
ac813d8
Merge branch 'weigl/ocfx-isabelletranslation.fx' (MP9.3: keyext.isabe…
wadoon Oct 9, 2026
b71ab7a
Merge branch 'weigl/ocfx-proofmanagement.fx' (MP9.6: keyext.proofmana…
wadoon Oct 9, 2026
0843715
Merge branch 'weigl/ocfx-slicing.fx' (MP9.4: keyext.slicing.fx — Java…
wadoon Oct 9, 2026
ddfe658
Merge branch 'weigl/ocfx-caching.fx' (MP9.1: keyext.caching.fx — Java…
wadoon Oct 9, 2026
cea634c
Merge branch 'weigl/ocfx-exploration.fx' (MP9.2: keyext.exploration.f…
wadoon Oct 9, 2026
c3fa2d9
Merge branch 'weigl/ocfx-ui.testgen.fx' (MP9.5: keyext.ui.testgen.fx …
wadoon Oct 9, 2026
b4ff548
keyext.ui.testgen.fx: MP9.5 integration review — declare :key.core (l…
Oct 9, 2026
3ccb7ca
MainWindowF: drawerlayout self test — expect 5 + extension left-panel…
Oct 9, 2026
7f32362
key.ui.fx: M6 parity close-out — module READMEs, consolidated KNOWN-S…
wadoon Oct 10, 2026
019d6c1
Merge branch 'weigl/ocfx-m6-closeout' (M6 parity close-out: READMEs, …
wadoon Oct 10, 2026
d107927
colors (P1): full Swing-parity color palette + effective CSS variable…
wadoon Oct 10, 2026
dd0a44c
Merge branch 'weigl/ocfx-p1-colors' — P1 colors: full Swing-parity pa…
wadoon Oct 10, 2026
7eaef3d
smt (P1): full Swing-parity SMT run UI (progress dialog, info window,…
wadoon Oct 10, 2026
9696096
Merge branch 'weigl/ocfx-p1-smt' — P1 SMT run UI: SolverListenerF + P…
wadoon Oct 10, 2026
e80815c
loading/exit (P1): confirmExit close-request flow, exit persistence, …
wadoon Oct 10, 2026
62bd3f2
Merge branch 'weigl/ocfx-p1-loading-exit' — P1 loading/exit: confirmE…
wadoon Oct 10, 2026
174fdc6
shortcuts (P1): Swing-parity key defaults, dead-binding revival, lega…
wadoon Oct 10, 2026
1e76846
Merge branch 'weigl/ocfx-p1-shortcuts' — P1 shortcuts: Swing-parity d…
wadoon Oct 10, 2026
fafb2dd
inputfreeze (P1): freeze the views during auto mode (blocking overlay…
wadoon Oct 10, 2026
4dab855
Merge branch 'weigl/ocfx-p1-inputfreeze' — P1 input freeze: blocking …
wadoon Oct 10, 2026
d03dbde
key.ui.fx: pin a JDK 25 toolchain for the FX modules
wadoon Oct 10, 2026
9bf5ec0
Merge branch 'weigl/ocfx-ci-toolchain': JDK 25 toolchain for the FX m…
wadoon Oct 10, 2026
1508209
Raise the build baseline to JDK 25 (replaces the FX-module toolchain …
wadoon Oct 10, 2026
00d0a25
Merge branch 'weigl/ocfx-ci-jdk25': uniform JDK 25 build baseline
wadoon Oct 10, 2026
5148bfc
P2a sequent interaction: left-click term menu, shift+click focussed a…
wadoon Oct 10, 2026
96492e1
Merge branch 'weigl-p2-sequent': P2a sequent interaction (left-click …
wadoon Oct 10, 2026
c042b85
PARITY-SIGNOFF: fold the 2026-10-10 difference audit into the trackin…
wadoon Oct 10, 2026
1ccad69
Merge branch 'weigl/ocfx-p2-docs': 2026-10-10 difference audit folded…
wadoon Oct 10, 2026
abaeae9
key.ui.fx: P2b contract completions + dialogs (A1/A2/A3/A9)
wadoon Oct 10, 2026
638ea70
Merge branch 'weigl/ocfx-p2-dialogs' into weigl/ocfx (P2b: contract c…
wadoon Oct 10, 2026
2f12ac7
prooftree (P3a): mediator support for the Apply Strategy and Prune po…
wadoon Oct 10, 2026
f02e616
prooftree (P3a): proof-tree parity C19-C23/C25/C27 in ProofTreeViewF
wadoon Oct 10, 2026
508b113
prooftree (P3a): key.fx.verify.prooftree hook + MainWindowF wiring
wadoon Oct 10, 2026
599c9d5
prooftree (P3a): whitelist key.fx.verify.prooftree, document the batch
wadoon Oct 10, 2026
f6d2d73
Merge branch 'weigl/ocfx-p3a-prooftree' into weigl/ocfx (P3a: proof t…
wadoon Oct 10, 2026
2faa527
P4: extension seams B13/D36 — menu-path nesting + keyboard-shortcut SPI
wadoon Oct 10, 2026
2967c0a
P4: C24 — PROOF_TREE extension contributions in the proof-tree popup
wadoon Oct 10, 2026
4b83b87
P4: D30 — wire the extension tooltip strings into the sequent hover t…
wadoon Oct 10, 2026
562c728
P4: extend key.fx.verify.extensions with the new seam assertions
wadoon Oct 10, 2026
8e63d25
P4: fix the D36 verify key event to Ctrl+Shift+F12 (was Ctrl+Alt+F12)
wadoon Oct 10, 2026
6339494
P4: sign-off — B13/C24/D30/D36 resolved, B14/B16/C26/A10 decided
wadoon Oct 10, 2026
689f6b3
P3c: A4 — proof statistics CSV/HTML export
wadoon Oct 10, 2026
d0c6a66
P3c: A5 — About KeY enriched toast, License dialog (LicenseDialogF)
wadoon Oct 10, 2026
5795ae5
P3b: B18 — recent-files + font-size order
wadoon Oct 10, 2026
70cedc8
P3b: B11/B15 — Goal Back label + GoalBack/Prune enablement
wadoon Oct 10, 2026
e2b8f47
P3c: A6 — Create Github Issue with bug template (URL built in MainWin…
wadoon Oct 10, 2026
f42afc7
P3c: A7 — save feedback ZIP (bug description, version, system propert…
wadoon Oct 10, 2026
fbec450
P3c: A8 — Save as Default in tooltip options dialog
wadoon Oct 10, 2026
36b0e97
P3c: D31 — sequent print line width from the viewport (Swing computeL…
wadoon Oct 10, 2026
56ba74a
P3c: D33 — per-view font families/sizes in ConfigF (Swing KEY_FONT_*)
wadoon Oct 10, 2026
43af590
P3c: D34 — open node in separate sequent buffer (SequentViewDockF)
wadoon Oct 10, 2026
1331f77
P3c: D37 — status bar progress bar and task progress wiring
wadoon Oct 10, 2026
1ed6d9e
P3c: uicontrol self test — P3c steps (A4/A6/A7/A8/D34/D37)
wadoon Oct 10, 2026
567a724
P3b: B12 — Strategy Macros superset + proof scripts
wadoon Oct 10, 2026
26ee03f
P3c: sign off A4-A8, D31, D33, D34, D37 (verification PASS on Xvnc :98)
wadoon Oct 10, 2026
ef70d08
P3b: B17 — TermLabelMenu persistence + styling
wadoon Oct 10, 2026
956b996
P4: singleton toolbar controls in HeatmapF/TestExtensionF
wadoon Oct 10, 2026
bef4742
P3b: B11/B12/B15/B17/B18 — sign off menus/toolbar parity items
wadoon Oct 10, 2026
161ed0b
P4: fold provider menus into the path terminal + async D36 toast assert
wadoon Oct 10, 2026
76d2ec3
Merge branch 'weigl/ocfx-p4-extensions' into weigl/ocfx (P4: extensio…
wadoon Oct 10, 2026
2cc5509
Merge branch 'weigl/ocfx-p3c-dialogs' into weigl/ocfx (P3c: dialogs/s…
wadoon Oct 10, 2026
93d4d58
P3b: B15 — refresh GoalBack/Prune enablement after menu-bar rebuild i…
wadoon Oct 10, 2026
5bbdfcc
P3b: B11/B15 verify — pre-schedule the IssueDialogF dismissal so the …
wadoon Oct 10, 2026
697eb0a
P3b: B12 — strategy-macro submenu seam expects the Swing category-gro…
wadoon Oct 10, 2026
15646a2
Merge origin/weigl/ocfx (P3c dialogs/status/sequent + P4 extension pa…
wadoon Oct 10, 2026
8e20039
Merge branch 'weigl/ocfx-p3b-menus' into weigl/ocfx (P3b: menu/toolba…
wadoon Oct 10, 2026
63d4465
key.ui.fx: WORK-PACKAGES.md — remaining-issue packages to finish the …
wadoon Oct 11, 2026
9aa48e5
WP-1: KeYMediatorF seams — opened-proofs accessor, extension-object r…
wadoon Oct 11, 2026
6b1dea4
WP-1: wire the seams — exit fires fireShutDown, opened-proofs sync, w…
wadoon Oct 11, 2026
7ab3812
WP-1: the auto-mode context API drives the freeze overlay — property …
wadoon Oct 11, 2026
05926c7
WP-1: ledger — MainWindowF:3721 RESOLVED, MainWindowF:2659 WONT-REPLI…
wadoon Oct 11, 2026
ee99de2
key.ui.fx: WP-10 — verify (and fix) the unverified Selection Back/For…
wadoon Oct 11, 2026
551dd6b
Merge WP-10 (weigl/ocfx-wp10-unverified): Selection Back/Forward veri…
wadoon Oct 11, 2026
af01e0c
keyext.isabelletranslation.fx (WP-8): port the Isabelle solver launch…
wadoon Oct 11, 2026
54cf360
WP-1: PARITY-SIGNOFF — exit-flow row notes the ported fireShutDown se…
wadoon Oct 11, 2026
4d09bd6
Merge WP-1 (weigl/ocfx-wp1-mediator): KeYMediatorF seams (opened-proo…
wadoon Oct 11, 2026
88b123b
Merge WP-8 (weigl/ocfx-wp8-isabelle): IsabelleLauncher launch ported …
wadoon Oct 11, 2026
c37a1a4
WP-3: ParallelProverStatusIndicatorF — Swing-parity SC/MT toggle butt…
wadoon Oct 11, 2026
9823f41
WP-4: caching parity — FX ReferenceSearchDialogF (per-goal table + Ap…
wadoon Oct 11, 2026
be0b390
WP-4: key.fx.verify.caching — CachingVerifyF harness (opened-proofs s…
wadoon Oct 11, 2026
6a2cabd
WP-2: port the heatmap heat overlay onto SequentViewF (Swing SequentV…
wadoon Oct 11, 2026
39b2c16
key.ui.fx (WP-5): ProofTreeViewF renderer-styling hook (CellStyler/St…
wadoon Oct 11, 2026
2d9fcd7
keyext.exploration.fx (WP-5): register ExplorationModeModel via the m…
wadoon Oct 11, 2026
50d3b00
keyext.exploration.fx (WP-5): promptForTerm modal retry-loop (Swing E…
wadoon Oct 11, 2026
604ee15
key.ui.fx (WP-5): getProofTreeView accessor for the extension ports +…
wadoon Oct 11, 2026
3fad63b
WP-5: ledger — all seven keyext.exploration.fx rows RESOLVED (mediato…
wadoon Oct 11, 2026
06a80bb
WP-3: theme persistence — ThemeManager persists the chosen theme to t…
wadoon Oct 11, 2026
3549393
WP-2: KNOWN-SIMPLIFIED — HeatmapF rows RESOLVED (heat overlay ported …
wadoon Oct 11, 2026
b9e2aba
Merge WP-5 (weigl/ocfx-wp5-exploration): mediator registry adoption, …
wadoon Oct 11, 2026
af67f91
WP-3: strategy preset combo / stash UI ported (Swing StrategySelectio…
wadoon Oct 11, 2026
f705a98
WP-2: branch-label editing on ProofTreeViewF — Swing ProofTreeView ed…
wadoon Oct 11, 2026
82e978c
WP-3: sequent user selection — sticky Ctrl/middle-click highlight ove…
wadoon Oct 11, 2026
413ea8d
WP-3: View-menu Pretty Print / Unicode parity closed via visible-effe…
wadoon Oct 11, 2026
2913232
WP-4: CachingVerifyF — close + reference the stub goal exactly like t…
wadoon Oct 11, 2026
d40d295
Merge WP-4 (weigl/ocfx-wp4-caching): ReferenceSearchDialogF port + Ap…
wadoon Oct 11, 2026
0ea2af3
WP-2: proof-tree renderer surface + NodeInfoVisualizer attachment — t…
wadoon Oct 11, 2026
56d1c26
WP-2: fix the renderer-surface self test — locate the NODE entry item…
wadoon Oct 11, 2026
8946874
WP-2: PARITY-SIGNOFF — prooftree component row RESOLVED (heatmap sequ…
wadoon Oct 11, 2026
60f524a
Merge WP-2 (weigl/ocfx-wp2-prooftree): heatmap heat overlay on Sequen…
wadoon Oct 11, 2026
6d6ac43
WP-6: MainWindowF slicing seams — loadProofFileDirect (recent-files b…
wadoon Oct 11, 2026
fd81557
WP-3: strategy preset verify unblocks — the modal alerts (built-in-na…
wadoon Oct 11, 2026
0f5c672
WP-6: slicing parity — graphviz DOT image render (GraphvizDotExecutor…
wadoon Oct 11, 2026
c70ad45
Merge WP-6 (weigl/ocfx-wp6-slicing): graphviz DOT rendering (dot bina…
wadoon Oct 11, 2026
74e9ac6
WP-7 C1: TestgenExtensionF implements ToolbarF + StartupF (drops Stat…
wadoon Oct 11, 2026
e1b50a9
WP-9 (1/4): AutoSave real-flow wiring assert — key.fx.verify.autosave…
wadoon Oct 11, 2026
a42e660
WP-7 C2: TestGenMacro default shortcut through the shared KeyStrokeMa…
wadoon Oct 11, 2026
2c708c2
WP-7 C3: auto-mode shell + cooperative stop for the testgen tasks
wadoon Oct 11, 2026
b4fd4a0
WP-9 (2/4): Minimize-Interaction real-flow wiring assert — key.fx.ver…
wadoon Oct 11, 2026
b3e8dbf
WP-9 (3/4): EnsureSourceConsistency load-pipeline wiring assert — new…
wadoon Oct 11, 2026
d51f5b8
WP-7 C4: counterexample search routed through SolverListenerF
wadoon Oct 11, 2026
352b9c7
WP-7 C5: embedded live TestGen options panel in the run dialog
wadoon Oct 11, 2026
7f537ca
WP-7 C6: counterexample model tree, help tab and line numbers in Info…
wadoon Oct 11, 2026
f530a84
WP-7 C7: undoable SMT result application through a user action
wadoon Oct 11, 2026
4ead80b
WP-7 C8: per-solver SMT options panels (SolverOptionsF) as child prov…
wadoon Oct 11, 2026
772621b
WP-9 (4/4): Contract E2E wiring assert — the dialogs self test gains …
wadoon Oct 11, 2026
7308a3c
WP-9: PARITY-SIGNOFF ledger — the four deferred integration-wiring as…
wadoon Oct 11, 2026
0660ab8
WP-3: the sequent printer now honors the ViewSettings pretty/unicode/…
wadoon Oct 11, 2026
285b06a
WP-3: menuparity PrettyUnicode leg — state-aware visible-effect probe…
wadoon Oct 11, 2026
fabd524
WP-7 C9: TestgenVerifyF harness (key.fx.verify.testgen) with reflecti…
wadoon Oct 11, 2026
41c708e
WP-3: PARITY-SIGNOFF — sequent multi-select highlight + reprint persi…
wadoon Oct 11, 2026
a0aba53
key.ui.fx: fix duplicated javadoc opener left by the WP-6 merge in Ma…
wadoon Oct 11, 2026
2e1f9d3
Merge WP-3 (weigl/ocfx-wp3-sequentui): strategy preset combo/stash UI…
wadoon Oct 11, 2026
67cee31
WP-7 C9b: run-dialog Close wiring and InformationWindowF no-solver guard
wadoon Oct 11, 2026
836b7d6
WP-7 C10: close the 15 TestGen/SMT ledger rows (KNOWN-SIMPLIFIED, PAR…
wadoon Oct 11, 2026
aaab85e
Merge WP-7 (weigl/ocfx-wp7-testgen-smt): TestgenExtensionF ToolbarF/S…
wadoon Oct 11, 2026
7015673
key.ui.fx: smt verify harness — track closed goals for the WP-7 undo …
wadoon Oct 12, 2026
1b1b8a7
Merge WP-9 (weigl/ocfx-wp9-integration): real-flow wiring asserts — A…
wadoon Oct 12, 2026
dd4afc5
key.ui.fx: whitelist key.fx.verify.autosave + key.fx.verify.minimizei…
wadoon Oct 12, 2026
48d0119
WP-11: FX default switchover in the docs — :key.ui.fx:run (MainEx) is…
wadoon Oct 12, 2026
80b84f2
WP-11: Swing retirement checklist (documented, NOT executed) — factua…
wadoon Oct 12, 2026
fb5b2d3
WP-11: close PARITY-SIGNOFF — no OPEN/unverified row remains: the las…
wadoon Oct 12, 2026
7791ff1
keyext.slicing.fx: SlicingVerifyF forces single-core prover for the v…
wadoon Oct 12, 2026
51193c9
WP-11: institutionalize the full per-flag UI verify sweep as a nightl…
wadoon Oct 12, 2026
0128bee
WP-11: shard the nightly UI verify sweep across seven parallel matrix…
wadoon Oct 12, 2026
19ab8fb
WP-11: UI verify sweep on push, one matrix job per flag (max parallel…
wadoon Oct 12, 2026
9ecea38
Merge WP-11 (weigl/ocfx-wp11-endgame): endgame — FX-default docs swit…
wadoon Oct 12, 2026
3f20582
key.ui.fx: drawer content area is a resizable SplitPane — multiple ex…
wadoon Oct 12, 2026
35234ac
key.ui.fx: the main frame hosts the drawers in a horizontal SplitPane…
wadoon Oct 12, 2026
bce24c0
key.ui.fx: the main SplitPane divider positions are persisted and res…
wadoon Oct 12, 2026
032b951
key.ui.fx: "Loaded Proofs" is the first item in the west drawer butto…
wadoon Oct 12, 2026
3fa3521
spotless: format the keyext.*.fx extension modules — CI CodeQuality (…
wadoon Oct 12, 2026
8dcb501
key.ui.fx: the toolbar buttons show their text beside the icon — they…
wadoon Oct 12, 2026
ec58b40
key.ui.fx: the toolbar automation + SMT controls become SplitMenuButt…
wadoon Oct 12, 2026
583abcf
key.ui.fx: the notification toasts appear in the right lower corner (…
wadoon Oct 12, 2026
92b507c
key.ui.fx: "About KeY…" opens a real modal dialog (AboutDialogF, titl…
wadoon Oct 12, 2026
363455e
key.ui.fx: the settings panel keeps its labels visible and aligns mul…
wadoon Oct 12, 2026
a015b23
key.ui.fx: the heatmap options description ("Heatmaps can be used to …
wadoon Oct 12, 2026
9e404e4
key.ui.fx: the settings dialog panels grow vertically with the dialog…
wadoon Oct 12, 2026
7b3e29e
key.ui.fx: the strategy panel's gear (stash) menu opens below the gea…
wadoon Oct 12, 2026
8dfb5da
key.ui.fx: the strategy panel gets a logarithmic slider for the maxim…
wadoon Oct 12, 2026
e738c82
key.ui.fx: the closed Sequent view can be restored — a new "Show Sequ…
wadoon Oct 12, 2026
154faad
key.ui.fx: the Load Options dialog button bar keeps a margin to the f…
wadoon Oct 12, 2026
ed3ad05
key.ui.fx: the type tree of the "Known types for this proof" dialog g…
wadoon Oct 12, 2026
46f159c
key.ui.fx: the proof statistics view grows vertically with the window…
wadoon Oct 12, 2026
121e7b7
key.ui.fx: the proof tree filters are factored out of the tree — a ne…
wadoon Oct 12, 2026
c87fcdf
key.ui.fx: the verify harnesses live in the test source sets — ProofT…
wadoon Oct 12, 2026
1e5048c
key.ui.fx: the dialogs contract e2e reads the example path or the swe…
wadoon Oct 13, 2026
23565b0
key.ui.fx: the joinmerge harness defaults the strategy step limit on …
wadoon Oct 13, 2026
e0e8c68
key.ui.fx: the Loaded Proofs view re-syncs the row highlight when the…
wadoon Oct 13, 2026
dbcf0dc
key.ui.fx: the drawerlayout verify reorders the first expanded drawer…
wadoon Oct 13, 2026
5c27309
key.ui.fx: the minimize-interaction real flow joins the flag change b…
wadoon Oct 13, 2026
6469fa9
key.ui.fx: the loadingexit sweep recipe passes the demo sequent — the…
wadoon Oct 13, 2026
06812a1
seqv: drop the Theme/Font size text from the status line
wadoon Oct 13, 2026
ec157f6
seqv: the Sequent dockable is not closeable
wadoon Oct 13, 2026
cc5fc6f
drawer: start layout expands Loaded Proofs and Proof Tree, Goal List …
wadoon Oct 13, 2026
3396d8f
drawer: an empty drawer leaves the main split, its divider vanishes
wadoon Oct 13, 2026
a07469e
sequent: the clicked-term highlight no longer uses bold (text jumped …
wadoon Oct 13, 2026
2406bc8
prooftree: the right-click menu resolves the clicked row through the …
wadoon Oct 13, 2026
f6f4137
sequent: macro popup items close the menu on click (CustomMenuItem hi…
wadoon Oct 13, 2026
93a6be3
heatmap: the toolbar toggle and settings buttons show icons
wadoon Oct 13, 2026
c4516f2
toolbar: all toolbar controls are icon-only (tooltips and accessible …
wadoon Oct 13, 2026
bdfc285
settings: the provider tree shares a SplitPane with the panel area an…
wadoon Oct 13, 2026
e9907bf
taclets: the Load KeY Taclets flow builds its proof environment off t…
wadoon Oct 13, 2026
ffd5800
settings: port the missing Feature Flags, Parallel Prover and SMT tra…
wadoon Oct 13, 2026
7b165fc
soundiness: the Soundiness extension contributes the proof-list conte…
wadoon Oct 13, 2026
e046d7e
taclets: a failed application shows the failure hint in the instantia…
wadoon Oct 13, 2026
535b9bc
statusbar: align the status bar components on their text baseline
wadoon Oct 13, 2026
f529913
javac: port the Java Compiler Check extension with its status-line bu…
wadoon Oct 13, 2026
6300894
about: make the version selectable and copyable
wadoon Oct 13, 2026
6400d49
mainwindow: re-stack the main area when the top/bottom heights change…
wadoon Oct 13, 2026
83a0a24
drawer: keep the toggle buttons visible when no item is expanded
wadoon Oct 13, 2026
ffdbbc2
drawer: show icons in the toggle buttons
wadoon Oct 13, 2026
a78f836
proofmanagement: separate targets and contracts by a split pane
wadoon Oct 13, 2026
c81b675
drawer: scroll the toggle strip and clamp the collapsed width safely
wadoon Oct 13, 2026
e86a43b
drawer: the self test expects the scroll-wrapped button bar
wadoon Oct 13, 2026
88a8fcb
testgen: the verify checks the accessible name of the icon-only buttons
wadoon Oct 13, 2026
09c13c3
settings: the ExtensionManager panel (enable/disable checkboxes per e…
wadoon Oct 14, 2026
a733934
drawer: chrome-free strip, flat toggles, slim scrollbar, exact strip …
wadoon Oct 14, 2026
b3669ca
menus: Swing-parity mnemonics on the five built-in menus
wadoon Oct 14, 2026
dd3acf1
show: fade the stage in to remove the black window flash
wadoon Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/workflows/code_quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up JDK 21
- name: Set up JDK 25
uses: actions/[email protected]
with:
java-version: 21
java-version: 25
distribution: 'corretto'
cache: 'gradle'
- name: Setup Gradle
Expand All @@ -31,7 +31,7 @@ jobs:
- uses: actions/[email protected]
with:
distribution: 'corretto'
java-version: '21'
java-version: 25
cache: 'gradle'
- name: Build with Gradle
run: ./gradlew --parallel --continue spotlessCheck
2 changes: 1 addition & 1 deletion .github/workflows/nightlydeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:
id-token: write

env:
JAVA_VERSION: 21
JAVA_VERSION: 25


jobs:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
java: [ 21, 25 ]
java: [ 25 ]
continue-on-error: false
runs-on: ${{ matrix.os }}
env:
Expand Down Expand Up @@ -72,7 +72,7 @@ jobs:
matrix:
test: [ testProveRules, testRunAllFunProofs, testRunAllInfProofs, testRunAllWdProofs, testProveSMTLemmas ]
os: [ macos-latest, ubuntu-latest, windows-latest ]
java: [ 21, 25 ]
java: [ 25 ]
z3: [ '4.15.4' ]
cvc5: [ '1.3.2' ]

Expand Down Expand Up @@ -119,7 +119,7 @@ jobs:
matrix:
test: [ testProveSMTLemmas, testStrictSMT ]
os: [ macos-latest, ubuntu-latest, windows-latest ]
java: [ 21 ]
java: [ 25 ]
z3: [ '4.13.4', '4.14.1', '4.15.4' ]
cvc5: [ '1.3.2', '1.2.1' ]
runs-on: ${{ matrix.os }}
Expand Down
15 changes: 10 additions & 5 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@ jobs:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
java: [ 21 ]
java: [ 25 ]
modules: [
keyext.exploration, keyext.slicing, key.ncore, key.ui, key.core,
key.core.testgen, keyext.isabelletranslation, keyext.ui.testgen, key.ncore.calculus,
key.util, key.core.example, keyext.caching, key.core.wd, key.core.infflow,
keyext.proofmanagement]
keyext.proofmanagement,
# JavaFX UI module and its six keyext ports (MP9.x): the unit tests are toolkit-free
# and headless-safe (the one panel test that needs the FX toolkit skips on
# display-less runners), see the per-module READMEs.
key.ui.fx, keyext.caching.fx, keyext.exploration.fx, keyext.isabelletranslation.fx,
keyext.slicing.fx, keyext.ui.testgen.fx, keyext.proofmanagement.fx]
continue-on-error: true
runs-on: ${{ matrix.os }}
env:
Expand All @@ -51,7 +56,7 @@ jobs:
- name: cvc5 version
run: cvc5 --version

- name: Set up JDK 21
- name: Set up JDK 25
uses: actions/[email protected]
with:
java-version: ${{ matrix.java }}
Expand Down Expand Up @@ -86,11 +91,11 @@ jobs:
matrix:
test: [ testProveRules, testRunAllFunProofs, testRunAllInfProofs, testRunAllWdProofs, testMtStress, testMt2w, testMt4w ]
os: [ ubuntu-latest ]
java: [ 21 ]
java: [ 25 ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Set up JDK 21
- name: Set up JDK 25
uses: actions/[email protected]
with:
java-version: ${{ matrix.java }}
Expand Down
76 changes: 76 additions & 0 deletions .github/workflows/ui-verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: UI verify sweep (key.ui.fx)

# Full per-flag regression sweep of the JavaFX UI (WP-11 deliverable): every
# -Dkey.fx.verify.* hook of key.ui.fx runs headlessly against real example proofs inside an
# Xvfb display (software rendering). Maximum parallelization: ONE matrix job per flag
# (recipes in key.ui.fx/ci/verify-sweep.sh); the themepersist save+restore pair and the
# special runs (xdotool key dismissal, real-z3 SMT, natural-exit loadingexit) are single
# matrix entries with multiple runs inside. Logs are uploaded per flag.
on:
push:
branches: [ "main", "weigl/ocfx", "weigl/ocfx-wp11-endgame" ]
paths:
- "key.ui.fx/**"
- "keyext.caching.fx/**"
- "keyext.exploration.fx/**"
- "keyext.isabelletranslation.fx/**"
- "keyext.proofmanagement.fx/**"
- "keyext.slicing.fx/**"
- "keyext.ui.testgen.fx/**"
- ".github/workflows/ui-verify.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
sweep:
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
flag: [ sequent, tree, goallist, notifications, docking, help, soundiness,
profileloading, javacsettings, termmenu, colors, shortcuts, sequentmenu,
dialogs, search, sequentsearch, sequentsearchmodes, treefilters,
tacletmatch, inputfreeze, updatehighlight, lemmaorigin, joinmerge,
joinmerge-gcd, proofmgmt-all, extensions, exploration, caching, prooftree,
slicing, testgen, heatmap, isabelle, sourceconsistency, autosave,
minimizeinteraction, themepersist, profileloadingdialog, smt, loadingexit,
proofdiff, drawer, drawerlayout, rightclickmacro ]
steps:
- uses: actions/checkout@v7

- name: Setup SMT solvers
uses: keyproject/setup-smt@v0
with:
z3Version: 4.13.0

- name: Set up JDK 25
uses: actions/[email protected]
with:
java-version: 25
distribution: 'corretto'
cache: 'gradle'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Install Xvfb, xdotool (key dismissal), graphviz (slicing DOT render)
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends xvfb xdotool graphviz

- name: Run the UI verify sweep (${{ matrix.flag }})
run: bash key.ui.fx/ci/verify-sweep.sh ${{ matrix.flag }}

- name: Upload sweep logs (${{ matrix.flag }})
uses: actions/upload-artifact@v7
if: always()
with:
name: ui-verify-${{ matrix.flag }}
path: |
build/ui-verify/*.log
build/ui-verify/RESULTS.md
build/ui-verify/failed-flags.txt
if-no-files-found: error
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,6 @@ checkstyle-diff.txt

# Java Flight Recorder output (e.g. runJfrProbe default mt-jfr-probe.jfr)
*.jfr

# Hermes tool cache (agent/tooling state; never version-controlled)
.hermes/
29 changes: 26 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,35 @@ Additional and optional components are in `keyext.*/` folders. The file `build.g
describing the dependencies and common build tasks for all subprojects.

`key.util`, `key.core` and `key.ui` are the base for the product "KeY Prover". Special care is needed
if you plan to make changes here.
if you plan to make changes here. `key.ui.fx` is the JavaFX re-implementation of the user
interface and the **default entry point** of the application
(see [key.ui.fx/README.md](key.ui.fx/README.md)); the legacy Swing UI in `key.ui` stays
available until its retirement decision ([key.ui.fx/SWING-RETIREMENT.md](key.ui.fx/SWING-RETIREMENT.md)).


## Compile and Run KeY

Assuming you are in the directory of this README file, you can create a runnable and deployable version with one of these commands:

1. With `./gradlew key.ui:run` you can run the user interface of KeY directly from the repository.
Use `./gradlew key.ui:run --args='--experimental'` to enable experimental features.
1. The JavaFX UI is the default way to run KeY's user interface directly from the repository:
```sh
./gradlew :key.ui.fx:run
```
This starts `de.uka.ilkd.key.core.fx.MainEx`. Use `./gradlew :key.ui.fx:runExperimental`
to enable experimental features. The `key.fx.*` demo/verification system properties,
the headless run recipe and the full documentation of the FX UI are in
[key.ui.fx/README.md](key.ui.fx/README.md).

The legacy Swing UI remains available (documented as *legacy*) until its retirement
decision ([key.ui.fx/SWING-RETIREMENT.md](key.ui.fx/SWING-RETIREMENT.md)):
```sh
./gradlew key.ui:run --args='--experimental'
```
Generic `-DmainClass` ergonomics: the root project's `execute`/`executeInTests` tasks run
any main class, e.g. `-DmainClass=de.uka.ilkd.key.core.fx.MainEx ./gradlew :key.ui.fx:execute`
(FX) or `-DmainClass=de.uka.ilkd.key.core.Main ./gradlew :key.ui:execute` (legacy Swing).
The dedicated `run` tasks are preferred: they set `key.examples.dir` and (for `key.ui.fx`)
forward the whitelisted `key.fx.*` properties.

2. Use `./gradlew classes` to compile KeY, which includes running JavaCC and Antlr.
Likewise, use `./gradlew testClasses` if you also want to compile the JUnit test classes.
Expand All @@ -81,6 +101,9 @@ Assuming you are in the directory of this README file, you can create a runnable
```
The file is generated in `key.ui/build/libs/key-*-slim-exe.jar`.
Both jars are also built as part of `./gradlew assemble`.
Note: these tasks package the **legacy Swing** product. The JavaFX UI currently runs via
`./gradlew :key.ui.fx:run`; its jlink/jpackage packaging is a later milestone (see the
packaging note in [key.ui.fx/README.md](key.ui.fx/README.md)).

5. A distribution is build with
```sh
Expand Down
13 changes: 7 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ subprojects {
version = rootProject.version

java {
sourceCompatibility = 21
targetCompatibility = 21
sourceCompatibility = 25
targetCompatibility = 25
}

repositories {
Expand Down Expand Up @@ -109,8 +109,9 @@ subprojects {
tasks.withType(JavaCompile).configureEach {
// Setting UTF-8 as the java source encoding.
options.encoding = "UTF-8"
// Setting the release to Java 21
options.release = 21
// Setting the release to Java 25 (also required by the JavaFX 25 jars, which are
// class-file version 67 = JDK 23+)
options.release = 25
}

tasks.withType(Javadoc).configureEach {
Expand Down Expand Up @@ -379,9 +380,9 @@ subprojects {


tasks.register('start'){
description = "Use :key.ui:run instead"
description = "Use :key.ui.fx:run (JavaFX UI, default) or :key.ui:run (legacy Swing UI) instead"
doFirst {
println "Use :key.ui:run instead"
println "Use :key.ui.fx:run (JavaFX UI, default) or :key.ui:run (legacy Swing UI) instead"
}
}

Expand Down
22 changes: 21 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ miglayout = "11.4.3"
picocli = "4.7.7"
docking-frames = "1.1.3p1"

# JavaFX user interface (key.ui.fx)
javafx = "25.0.4"
richtextfx = "0.11.7"
openjfx-plugin = "0.1.0"

# Icon fonts (ikonli, kordamp.org/ikonli) — FontAwesome glyphs for the keyext FX ports
ikonli = "12.4.0"

# External tools
scala-isabelle = "0.4.5"

Expand Down Expand Up @@ -80,6 +88,17 @@ miglayout-swing = { module = "com.miglayout:miglayout-swing", version.ref = "mig
docking-frames-common = { module = "org.key-project:docking-frames-common", version.ref = "docking-frames" }
docking-frames-core = { module = "org.key-project:docking-frames-core", version.ref = "docking-frames" }

# JavaFX UI components (key.ui.fx)
richtextfx = { module = "org.fxmisc.richtext:richtextfx", version.ref = "richtextfx" }
javafx-base = { module = "org.openjfx:javafx-base", version.ref = "javafx" }
javafx-controls = { module = "org.openjfx:javafx-controls", version.ref = "javafx" }
javafx-graphics = { module = "org.openjfx:javafx-graphics", version.ref = "javafx" }
javafx-web = { module = "org.openjfx:javafx-web", version.ref = "javafx" }

# ikonli — FontAwesome icon fonts (see kordamp.org/ikonli), used by the keyext FX ports
ikonli-javafx = { module = "org.kordamp.ikonli:ikonli-javafx", version.ref = "ikonli" }
ikonli-fontawesome6 = { module = "org.kordamp.ikonli:ikonli-fontawesome6-pack", version.ref = "ikonli" }

# CLI
picocli = { module = "info.picocli:picocli", version.ref = "picocli" }

Expand All @@ -98,4 +117,5 @@ spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
checkerframework = { id = "org.checkerframework", version.ref = "checkerframework-gradle" }
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" }
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
license-report = { id = "com.github.jk1.dependency-license-report", version = "3.1.4" }
license-report = { id = "com.github.jk1.dependency-license-report", version = "3.1.4" }
openjfx = { id = "org.openjfx.javafxplugin", version.ref = "openjfx-plugin" }
Loading
Loading