Skip to content

fix(app): report import stop outcomes and guard active sheets - #4031

Merged
datlechin merged 5 commits into
mainfrom
fix/import-stop-and-sheet-guard
Nov 4, 2026
Merged

datlechin merged 5 commits into
mainfrom
fix/import-stop-and-sheet-guard

Conversation

@datlechin

@datlechin datlechin commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Summary

Defect Result
Import writes continued while Stop predicted rollback Pause at a write boundary, then offer Continue or the supported stop choices
Mixed tables, failed writes and file-owned transactions had misleading outcomes Record each file's actual outcome and keep cleanup errors visible
Sheet commands could replace a running dialog One shared guard covers menus, toolbar actions, direct dispatch and late async results
  • SQL Server SQL-file batches relinquish automatic transaction finalization before execution, including batches without GO. The result reports any transaction left open. Generated row imports retain their separate transaction handling.
  • The verification wrapper now builds the missing Dameng bridge before AllPlugins, matching the CI prerequisite.
  • Keep user-owned transactions open. Track table creation and retry clearing separately from imported rows. Counts describe submitted rows, not affected rows.
  • Updated ImportCancelledTextTests deliberately: untracked server/file transaction endings say changes may stay.

Test plan

  • Passed: app build, 149 import tests (including 3 live MariaDB probes), 9 PluginKit row-runner tests, 59 sheet/menu/toolbar tests, and 4 after-capture UI flows without retries.
  • Lint: 35 Swift files, zero violations. Localization passed. Fresh read-only review found no actionable defects.
  • Full Unit plan: 28,781 executed, 28,780 passed, 1 failed, 2 skipped. The only failure is GutterNumberOffsetTests/windowGutterKeepsItsMargin, also recorded on main in fix(app): finish the state-surfaces follow-ups #4018 under Dark Mode. No editor code changes here.
  • All-plugin build passed. PluginKit ABI is unchanged (kit 41, minimum 19). Docs writing-style, source and link checks passed.
  • Local iOS check is INCONCLUSIVE: no simulator runtime is installed, so zero tests ran. CI covers iOS.
  • Real MariaDB probe uses a throwaway database for InnoDB rollback, commit, and mixed InnoDB/MyISAM rollback.
  • Screenshots use isolated Debug copies and actual SQLite imports/exports. A slow trigger/view holds the job open; no production state was patched.
  • On this Mac, AppKit already dims Restore Previous Values on the baseline build. Direct-dispatch and delayed-command regression tests verify the added guard; the menu pictures do not claim a reproduced enabled baseline.
Surface Before After
Import stop question, light Before Import stop question, light After Import stop question, light
Import stop question, dark Before Import stop question, dark After Import stop question, dark
Import result, light Before Import result, light After Import result, light
Import result, dark Before Import result, dark After Import result, dark
Running export, light Before Running export, light After Running export, light
Running export, dark Before Running export, dark After Running export, dark
Edit menu during export, light Before Edit menu during export, light After Edit menu during export, light
Edit menu during export, dark Before Edit menu during export, dark After Edit menu during export, dark
  • The Edit menu follows the system dark appearance in both app appearance captures.

@datlechin
datlechin merged commit 4aa4a02 into main Nov 4, 2026
10 of 12 checks passed
@datlechin
datlechin deleted the fix/import-stop-and-sheet-guard branch November 4, 2026 08:18
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.

1 participant