feat: chat file-panel UX polish + sandbox LaTeX toolchain#2148
Merged
Conversation
Add an expand/collapse control to the chat panel header so a cramped docked panel can grow to a full-viewport overlay (reusing the mobile overlay) for reading documents or the live browser, with Escape to exit. Raise the overlay to z-50 so it covers the sticky composer instead of letting it bleed through.
…he docked panel Cap the floating action card to the viewer width and let it wrap, so its buttons stack to a second row instead of overflowing a narrow docked column and being clipped. Size the content gutter from the card's measured height so the last line always scrolls clear of it (the fixed pb-14 cleared by only ~2px and tucked content behind a wrapped card).
…g workspace files Key the files body by threadId alone instead of threadId+refreshNonce, so Refresh no longer remounts and collapses the tree to root. The tree already re-fetches its expanded dirs in place off the refreshNonce prop; a stopped session is re-probed via an effect that flips sessionRunning back on, without remounting the whole body.
…iles Track the last picked view mode and use it as the default for files the user hasn't explicitly toggled, so choosing Preview on one doc carries to the next (like the shared wrap toggle) while individual files still override.
Add texlive-xetex/latex-recommended/fonts-recommended/lang-chinese + lmodern so 'pandoc --pdf-engine=xelatex --toc' produces publication-grade PDFs (real TOC, page numbers, headers/footers, title page) instead of the render-and-stitch fallback. lmodern is pulled explicitly because pandoc's default template needs lmodern.sty but --no-install-recommends drops it; lang-chinese provides xeCJK so the Chinese workspace docs typeset (Noto CJK fonts already baked).
…ent toolchain The Validate-images gate was already failing on main: the document-conversion tools (libreoffice/poppler/pandoc) pushed sandbox-runtime to 3114 MB, over the 2800 MB budget. The new LaTeX/XeTeX layer adds ~660 MB more (~4.0 GB total), so raise the budget to 4400 MB (~10% headroom) and document the toolchain that justifies the size.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
External-agent chat file-panel UX improvements, plus a LaTeX toolchain in the sandbox image so pandoc can produce publication-grade PDFs. Each change is its own commit.
Changes
feat(platform)— fullscreen toggle for the chat side panelThe docked right-side panel was too narrow for reading documents. Added an expand/collapse control in the panel header that grows it to a full-viewport overlay (reusing the existing mobile overlay path), with Escape to exit. The overlay is
z-50so it covers thesticky z-50composer instead of letting it bleed through at the bottom.fix(platform)— canvas file-action toolbar no longer clips in the docked panelThe floating Source/Preview/Copy/Download card was wider than the narrow docked viewer column, so its left edge was clipped (and the last content line could tuck behind it). The card is now capped to the viewer width and wraps to a second row when needed; the content gutter is sized from the card's measured height (the old fixed
pb-14cleared by only ~2px).fix(platform)— refresh preserves expanded folders + open fileClicking Refresh collapsed the workspace file tree back to root and dropped the open file, because the body was keyed by
refreshNonce(forcing a remount). It's now keyed bythreadIdalone — the tree already re-fetches its expanded dirs in place offrefreshNonce, and a stopped session is re-probed via an effect rather than a full remount.feat(platform)— sticky Source/Preview across filesThe view mode was remembered per file path, so each newly-opened doc reverted to the
sourcedefault. It now tracks the last-picked mode as the sticky default for untouched files (mirroring the sharedwraptoggle), while files you explicitly toggle still keep their own choice.feat(sandbox)— LaTeX/XeTeX toolchain for pandoc PDF outputAdded
texlive-xetex texlive-latex-recommended texlive-fonts-recommended texlive-lang-chinese lmodernto the sandbox-runtime image sopandoc --pdf-engine=xelatex --tocyields real TOC / page numbers / headers-footers / title page instead of the render-and-stitch fallback.lmodernis pulled explicitly: pandoc's default template needslmodern.sty, but it's only a Recommends that--no-install-recommendsdrops.texlive-lang-chineseprovides xeCJK so the Chinese workspace docs typeset (Noto CJK fonts were already baked for the live browser). Chinese output requires-V CJKmainfont="Noto Sans CJK SC".Verification
vatplus/sourceexpanded and the open file selected; a never-opened doc inherits the last-picked Preview mode.xelatexpresent;pandoc → xelatexPDF for English (with--toc) and Chinese (CJK text extractable viapdftotext) — 3/3 pass.tsc --noEmitandoxlint --type-awareclean on all touched files.