-
Notifications
You must be signed in to change notification settings - Fork 0
Desktop workbench overhaul: toolbar options, input/constants/result redesign, design-token pass #84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
yilibinbin
wants to merge
139
commits into
main
Choose a base branch
from
feat/toolbar-options-popup
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
139 commits
Select commit
Hold shift + click to select a range
09a9551
fix(web-deploy): correct broken WSGI target + honest multi-worker doc…
Aaronhaohao c473398
Merge fix/p0-deploy-wsgi: SWARM P0 F01/F02 deploy-doc fixes
Aaronhaohao c1532ad
docs: add SWARM_REVIEW_2026 comprehensive review report
Aaronhaohao 828a312
docs: Adaptive Workbench Section 1 (design) + Section 2 (batch plan) …
Aaronhaohao 506b9c3
Merge docs/adaptive-workbench-specs: Section 1 + 2 planning docs
Aaronhaohao 8447cad
feat(desktop): icon-ified menu bar + result overview popover + status…
Aaronhaohao 6dce23c
fix(desktop): menu-bar review — gate-reveal on gated checkbox actions…
Aaronhaohao 43e8035
test(desktop): programmatic reachability sweep — enumerate all schema…
Aaronhaohao 43749d8
test(desktop): reachability sweep includes QAbstractSpinBox (QDoubleS…
Aaronhaohao b09bcc4
test(desktop): reachability covers custom editors + closed type-exhau…
Aaronhaohao 85c3db6
test(desktop): reachability sweep covers runtime-relabelled schema keys
Aaronhaohao 95aec0c
feat(desktop): in-menu editors for 计算/LaTeX options (mirror widgets, …
Aaronhaohao 86e012d
test(desktop): assert mirror edit re-runs real spin's downstream slot…
Aaronhaohao 363b817
fix(desktop): overview popover opens on left-click only (CodeRabbit)
Aaronhaohao ece3785
docs(desktop): toolbar options-popup (QFrame) design spec — pivot fro…
Aaronhaohao d9733f2
docs(desktop): amend options spec → INLINE toggle panel (dual-model V…
Aaronhaohao 22973ca
feat(desktop): inline toolbar options panels (计算/LaTeX), remove left …
Aaronhaohao 67e82e3
fix(desktop): repoint GUI schema scanner at the option panels (serial…
Aaronhaohao 984abc6
fix(desktop): overview popover shows 0 points for empty tabular resul…
Aaronhaohao 2cfadd4
test(desktop): reachability sweep only toggles user-operable selector…
Aaronhaohao d76ee47
docs(desktop): finalize 2-pane layout spec — complete 3-pane blast ra…
Aaronhaohao cb60f59
feat(desktop): move compute-mode selector to the toolbar (Stage ① of …
Aaronhaohao 5690384
feat(desktop): merge 3-pane workbench into 2 panes (Stage ②+③)
Aaronhaohao f8a4b34
fix(desktop): GUI scan fails loud if an options panel is missing (Cod…
Aaronhaohao 14768e5
docs(desktop): LaTeX/PDF window + toolbar/result cleanup design spec
Aaronhaohao 65cd8c7
docs(desktop): revise LaTeX/PDF spec — fold in Codex design-review (5…
Aaronhaohao 8ecef38
docs(desktop): LaTeX spec — note pdf rasterizer reuse + verified web …
Aaronhaohao cb239be
docs(desktop): finalize LaTeX spec — workspace migration verified (no…
Aaronhaohao 37d8f9d
feat(desktop): tectonic-only PDF compile — drop local-tex fallback (M…
Aaronhaohao b08164e
feat(desktop): options as QDialogs, drop LaTeX output-path field (Mod…
Aaronhaohao 9242680
feat(desktop): run writes LaTeX to a temp path, not a user output fie…
Aaronhaohao be870af
feat(desktop): LaTeX preview dialog with TeX/PDF tabs (Module 1b)
Aaronhaohao f029d0d
docs(desktop): on-demand LaTeX refactor spec (result-panel model)
Aaronhaohao c82f693
docs(desktop): revise on-demand LaTeX spec — Codex design review (6 c…
Aaronhaohao fee0ed2
docs(desktop): on-demand LaTeX spec — rebuild tex from persisted resu…
Aaronhaohao d5e760e
fix(desktop): LaTeX preview PDF renders on compile-completion, not sy…
Aaronhaohao 3d870ee
docs(desktop): 4·2 integration notes — per-mode on-demand LaTeX snaps…
Aaronhaohao 877bda9
feat(desktop): on-demand LaTeX foundation + root_solving rebuild (4·2)
Aaronhaohao 5981c38
feat(desktop): on-demand LaTeX rebuild — extrapolation (4·2, 2/5 modes)
Aaronhaohao 2a65388
feat(desktop): on-demand LaTeX rebuild — error propagation (4·2, 3/5 …
Aaronhaohao 8e68243
feat(desktop): on-demand LaTeX rebuild — statistics (4·2, 4/5 modes)
Aaronhaohao 45a753b
feat(desktop): on-demand LaTeX rebuild — fitting single-fit (4·2 COMP…
Aaronhaohao d16b783
feat(desktop): on-demand LaTeX dispatcher (4·3 part 1)
Aaronhaohao 9252711
feat(desktop): 生成TeX/预览PDF result-panel buttons + open_latex_preview …
Aaronhaohao 182c014
refactor(desktop): remove empty output_setup_section from the merged …
Aaronhaohao 24e2dce
feat(desktop): collapse history section by default, click header to e…
Aaronhaohao 4224fad
feat(desktop): run no longer writes tex — on-demand generates it (4·4)
Aaronhaohao 4f4c7c6
feat(desktop): move LaTeX options to result panel, drop toolbar LaTeX…
Aaronhaohao 1afab05
feat(desktop): remove TeX/PDF tabs from result_tabs, keep widgets off…
Aaronhaohao df94b00
feat(desktop): delete bottom 开始执行 button, drive run/stop from toolbar…
Aaronhaohao 33da84a
feat(desktop): remove generate_latex_checkbox, LaTeX options always v…
Aaronhaohao 10791a8
fix(desktop): LaTeX preview never shows a stale PDF or stays stuck co…
Aaronhaohao 075af1f
fix(desktop): PDF preview tab no longer shows a fake "编译 PDF 中…" + co…
Aaronhaohao bfc28d2
fix(latex): group the integer part too (group-digits=all), not just d…
Aaronhaohao 1c4e4d1
feat(latex): engine capability probe + mode resolution (Step 1 of eng…
Aaronhaohao b89add4
feat(latex): sisetup emitter takes emit_digit_group_size from the pro…
Aaronhaohao 9482212
feat(latex): engine-adaptive digit grouping for statistics mode (Step…
Aaronhaohao e6a047a
feat(latex): compile uses the resolved engine per mode, not hardcoded…
Aaronhaohao ac8478a
feat(latex): engine MODE selector UI (自动/内置/本地) driving the adaptive …
Aaronhaohao d618b15
feat(latex): engine dropdown lists the actual detected compilers, not…
Aaronhaohao a7ee91e
fix(latex): don't follow the engine symlink + show the engine selecto…
Aaronhaohao 34bbce3
feat(latex): engine-adaptive digit grouping for root-solving mode (St…
Aaronhaohao f87f63d
feat(latex): engine-adaptive digit grouping for error-propagation mod…
Aaronhaohao 95c5cca
feat(latex): engine-adaptive digit grouping for fitting mode (Step 3b·3)
Aaronhaohao b7b8edf
feat(latex): engine-adaptive digit grouping for extrapolation mode (S…
Aaronhaohao 41ac5e6
test(latex): fitting preamble test reflects unguarded digit-group-siz…
Aaronhaohao b17cdd6
fix(latex): resolve 5 dual-model adversarial-review findings (F1-F5)
Aaronhaohao 74109e7
fix(latex): local engine mode must not fall back to Tectonic auto-ins…
Aaronhaohao 6f03a2d
fix(desktop): batch fit can now generate LaTeX on demand (+ F1 leftover)
Aaronhaohao d61697b
fix(desktop): long compile-error dialog no longer pushes OK off-screen
Aaronhaohao 662b0ff
fix(desktop): result font-size control now live-updates + survives re…
Aaronhaohao fd36002
fix(desktop): fit model line honours display digits + scientific toggles
Aaronhaohao ece89d3
feat(desktop): result overview → clickable toolbar status chip; remov…
Aaronhaohao 603b3a5
chore: satisfy mypy-strict + file-size ratchet after bugfix/redesign …
Aaronhaohao 33cbf33
fix(desktop): batch-fit on-demand builder returns None on write failure
Aaronhaohao 5dc9f60
fix(desktop): serial-review findings — batch-tex fidelity + test/widg…
Aaronhaohao 2c3d990
feat(desktop): move 不确定度位数 to result panel with live re-render
Aaronhaohao 6498f36
feat(desktop): persist tex-rebuild stash in workspace (生成 TeX works a…
Aaronhaohao 85cd78a
feat(desktop): move history to a toolbar 历史 button → popup panel
Aaronhaohao 2410965
feat(desktop): Excel-like cell copy + kill hollow gap around short co…
Aaronhaohao 1197d7d
feat(desktop): merge input data + constants into sheet tabs (输入数据 / 常数)
Aaronhaohao 141a1d9
fix(desktop): self-contained input/constants tabs + per-tab data-file…
Aaronhaohao 7010f21
docs: spec — unify left column into data + one config card
Aaronhaohao bd0ba19
docs(spec): add three-model review findings (S1-S5 in-scope + pre-exi…
Aaronhaohao c524e62
fix(desktop): S1 — lossless mpf workspace serialization (was two-side…
Aaronhaohao c817469
fix(desktop): review findings P-A + S2..S5 (crash, round-trip, clip, …
Aaronhaohao 9ad3c7c
revert(desktop): S2 was a misjudgment — file-source decoupling is by …
Aaronhaohao e597689
fix(desktop): pre-existing capture edge cases P-B/P-C/P-D (from review)
Aaronhaohao ea1885d
feat(desktop): unify left column into [input data] + [one config card]
Aaronhaohao 6752268
docs(spec): mark config-card restructure implemented (ea1885d)
Aaronhaohao 0fed9c7
fix(desktop): UI polish — tab border, 参数 title, remove collapse, dark…
Aaronhaohao f1bab71
feat(desktop): remove the units (单位标注) feature + fix option reachability
Aaronhaohao a2f3027
refactor(desktop): remove dead _unit_rows_to_map helper (Claude self-…
Aaronhaohao d2bd1ec
fix(desktop): restyle formula preview + input tabs on theme toggle (C…
Aaronhaohao 0f03cd4
fix(desktop): constants editor restyles on theme toggle (P2/P3 siblin…
Aaronhaohao 122fb73
feat(desktop): default to a result-heavy pane ratio (~1:3 target)
Aaronhaohao a450ebf
feat(desktop): drop 使用数据文件 checkbox — file path takes precedence over…
Aaronhaohao 014bcf8
fix(desktop): keep formula preview pixmap inside the padded box (bott…
Aaronhaohao 2d35642
feat(desktop): input-data area expand/collapse toggle with smooth ani…
Aaronhaohao 435e509
fix(desktop): put 数据文件 label on the same row as the path edit + Browse
Aaronhaohao 7520296
fix(desktop): make 输入数据 and 常数 tab file-row layouts consistent
Aaronhaohao d947517
fix(desktop): align 输入数据/常数 cards — row count, ? placement, file-row …
Aaronhaohao b0ef466
feat(desktop): add 输入常数 title to the constants card (mirrors 输入数据)
Aaronhaohao ff7a1c0
style(desktop): use workbench_title_text_style() for the constants ti…
Aaronhaohao 0d6796e
refactor(theme): converge near-duplicate colors into semantic tokens …
Aaronhaohao fbfb405
refactor(theme): converge border-radius to a 3-tier scale (design rev…
Aaronhaohao 675bca1
refactor(desktop): unify card padding + de-border nested variable car…
Aaronhaohao 08bb86c
fix(desktop): stop in-flight input-expand animation before starting a…
Aaronhaohao 8b3603b
fix(desktop): file-precedence live feedback + tutorial contrast (Code…
Aaronhaohao cfa2a56
fix(theme): pin tutorial title to dark text on its always-white card …
Aaronhaohao 1825505
feat(desktop): give the embedded 输入常数 card a border like 输入数据
Aaronhaohao 77ada2e
fix(desktop): restore full border on variable section cards (参数 card …
Aaronhaohao 02adc4d
refactor(desktop): /simplify cleanup — radius convergence, keystroke …
Aaronhaohao 1d8496b
fix(desktop): address CodeRabbit PR #84 review findings
Aaronhaohao a9c177a
fix(desktop): register data/constants file-edit tooltip + bilingual p…
Aaronhaohao ba9678d
test(desktop): fix fit-batches result tests that hung CI on a blockin…
Aaronhaohao 2c3872a
fix: satisfy precision-guardrail + file-size ratchet (CI quality gates)
Aaronhaohao 0fe1aeb
fix(desktop): palette-change slot must not crash the event loop on a …
Aaronhaohao 1cdaed0
test(desktop): pin UI language in input-constants-tabs tests (platfor…
Aaronhaohao 83048b1
fix(web): clamp user mpmath precision on all compute routes (audit A1…
Aaronhaohao 5721a1a
fix(latex): floor formatter working precision to `places` (audit A3, …
Aaronhaohao 3437533
fix(desktop): drop oversized latex_inputs stash instead of failing th…
Aaronhaohao 9a4e754
fix(fitting): report NaN uncertainty for dof<=0 custom fits (audit A5…
Aaronhaohao 8b2bf90
fix(web): repair docs heading-id regex so TOC anchors resolve (audit …
Aaronhaohao 1376e75
fix(desktop): token-ify input_data_tabs_style so it matches the resul…
Aaronhaohao 75a254f
fix(web): rate-limit the heavy compute POST routes (audit A2, medium)
Aaronhaohao 8a2f29b
fix(extrapolation): derive Shanks diagnostics from convergents, not t…
Aaronhaohao c8cfac1
fix(desktop): don't restore a stale constants text draft over authori…
Aaronhaohao 68b4c75
fix(latex): satisfy mypy-strict in _format_workdps (int(mp.dps))
Aaronhaohao 42ee385
feat(extrapolation): expose quadratic three-point method in desktop c…
Aaronhaohao caa4e27
feat(web-fitting): add self_consistent (implicit) fitting to Flask ba…
Aaronhaohao b6862b1
fix(web-fitting): clean bilingual error + N/A for undefined self_cons…
Aaronhaohao 17153d0
fix(latex/web): root-guard non-finite values in LaTeX formatting + bi…
Aaronhaohao 3dc29da
fix(latex/report): sink non-finite guard into private formatter + sup…
Aaronhaohao 92dbf4e
fix(latex-tables): pass \multicolumn literal cells through app-side g…
Aaronhaohao 288a305
fix(desktop): keep manual table editable after opening an example wor…
Aaronhaohao a95a141
fix(desktop): remove redundant 预览 PDF button from result panel
Aaronhaohao daca737
fix(desktop): also clear file-mode constants path on example open (co…
Aaronhaohao dbbb838
test(desktop): assert constants content (ALPHA) survives, not just ro…
Aaronhaohao File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,20 +1,45 @@ | ||
| from __future__ import annotations | ||
|
|
||
| from PySide6.QtCore import QSize | ||
| from PySide6.QtWidgets import QStackedWidget | ||
| from PySide6.QtWidgets import QStackedWidget, QWidget | ||
|
|
||
|
|
||
| class CurrentPageStack(QStackedWidget): | ||
| """QStackedWidget whose layout hints come only from the current page.""" | ||
| """QStackedWidget whose height tracks the CURRENT page only. | ||
|
|
||
| A plain QStackedWidget sizes to its tallest page, so a short mode config would sit in a hollow | ||
| gap; capping it at Maximum policy instead clipped a mode whose config grows after layout | ||
| (fitting→comparison). This subclass pins its own fixed height to the active page's sizeHint, | ||
| re-syncing on page change and when the active page's layout invalidates — so it is always | ||
| exactly as tall as the current page needs (no gap, no clip). | ||
| """ | ||
|
|
||
| def __init__(self, parent: QWidget | None = None) -> None: | ||
| super().__init__(parent) | ||
| self.currentChanged.connect(lambda _index: self._sync_height_to_current()) | ||
|
|
||
| def sizeHint(self) -> QSize: | ||
| page = self.currentWidget() | ||
| if page is None: | ||
| return super().sizeHint() | ||
| return page.sizeHint() | ||
| return page.sizeHint() if page is not None else super().sizeHint() | ||
|
|
||
| def minimumSizeHint(self) -> QSize: | ||
| page = self.currentWidget() | ||
| return page.minimumSizeHint() if page is not None else super().minimumSizeHint() | ||
|
|
||
| def _sync_height_to_current(self) -> None: | ||
| page = self.currentWidget() | ||
| if page is None: | ||
| return super().minimumSizeHint() | ||
| return page.minimumSizeHint() | ||
| return | ||
| # Fix the stack to the current page's preferred height so the layout neither inflates a | ||
| # short page (gap) nor caps a taller/grown page (clip). | ||
| self.setFixedHeight(max(page.sizeHint().height(), page.minimumSizeHint().height())) | ||
|
|
||
| def event(self, evt) -> bool: # type: ignore[no-untyped-def] | ||
| # LayoutRequest fires when the current page's contents change size (e.g. a mode reveals | ||
| # extra fields). Re-sync so a dynamically growing page is not clipped. | ||
| result = super().event(evt) | ||
| from PySide6.QtCore import QEvent | ||
|
|
||
| if evt.type() == QEvent.Type.LayoutRequest: | ||
| self._sync_height_to_current() | ||
| return result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.