Skip to content

Fix Studio editing, project import, and compilation regressions - #3

Merged
Escap1ng merged 3 commits into
Escap1ng:mainfrom
nisconder:fix/studio-regressions-upstream
Nov 13, 2026
Merged

Escap1ng merged 3 commits into
Escap1ng:mainfrom
nisconder:fix/studio-regressions-upstream

Conversation

@nisconder

Copy link
Copy Markdown
Contributor

This fixes eleven reproducible Studio bugs affecting source preservation, project imports, and compilation/preview state. The changes are based on the current main and follow the src/, server/, and scripts/ layout introduced in v2.1.0.

Trigger Result after this change
Cancel compilation before the POST response supplies its job ID Retain the creation response, cancel the eventual server job, and wait for engine cleanup before acknowledging cancellation.
A delayed service connection response arrives during compilation Ignore the stale response instead of overwriting the running state or session token.
Export and re-import a project ZIP containing Latin-1 text or explicitly typed files Preserve file bytes, encoding, and kind.
Insert an image whose label contains an underscore Preserve the label key so references resolve consistently.
Edit a formula label, then switch to advanced source editing Retain the pending label edit when applying the advanced editor.
Delete the whitespace between a protected control word and ordinary text Export a separator such as \LaTeX{}book, preserving the command boundary.
Empty a visual paragraph, leaving the browser's placeholder <br> Avoid inserting an unintended TeX line-break command while preserving real line breaks.
Replace a project while Add Files is still reading files Discard the old project's pending results and errors without changing the replacement project.
Create, import, or rename files with conflicting file/directory paths Reject the entire operation before mutation, including case and Unicode-normalization collisions.
Compile a PostScript project with enough resources to exceed Windows command-line limits Use a Ghostscript response file while preserving SAFER switches and per-file permissions.
Keep reading a PDF beyond the cache lifetime, or retry an expired preview Renew results on active use and rebuild an evicted result on explicit retry, preserving cached PDF export and bounded idle cleanup.

Validation:

  • Added 40 regression tests; all 331 tests pass locally on Windows.
  • JavaScript syntax checks, the resource/markup smoke check, and git diff --check pass.
  • Tests include production editor/import handlers, real HTTP client/server cancellation and expiry flows, and a real Windows child process for a 500-file PostScript project.
  • CI now runs the regression suite on Ubuntu and Windows with Node 22.
  • Existing upstream documentation, release history, asset layout, and build/deployment workflows are preserved.

The Ghostscript response-file handling follows the official argument-file documentation and argument parser. The process regression uses a Node engine fixture; actual Ghostscript rendering was not exercised because Ghostscript is not installed locally.

@Escap1ng
Escap1ng merged commit 044209b into Escap1ng:main Nov 13, 2026
2 checks passed
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.

2 participants