-
Гильмуллин Руслан Ниязович создал
* docs: spec + plan for tape-block copy + paste (#63) * docs: register tapeSnapshot.test.ts topics in scenario ID grammar * icons: add copy + clipboard (for tape snapshot actions) * tapeSnapshot: scaffold module with serialize + minimal parse (R-snapshot-roundtrip) * tapeSnapshot: parse catches JSON.parse errors (R-snapshot-parse-not-json) * tapeSnapshot: validate format discriminator (R-snapshot-parse-wrong-format) * tapeSnapshot: validate version field (R-snapshot-parse-unsupported-version) * tapeSnapshot: validate tapes shape + position range (R-snapshot-parse-wrong-shape-tapes) * tapeSnapshot: validate alphabets shape (R-snapshot-parse-wrong-shape-alphabets) * tapeSnapshot: validate tapes.length === alphabets.length (R-snapshot-parse-length-mismatch) * MachineView: wire copy + paste tape-snapshot actions (closes #63) * MachineView: right-align copy/paste icons, relax paste to MAX_TAPES bound - Reorder .tape-actions row to [Take Control] [Copy] [Paste]; pin the icons to the right via `justify-content: flex-end` so they stay anchored even when Take Control is hidden (MANUAL / RUNNING_CONTINUOUS / paused). - Switch .take-control from `width: 100%` to `flex: 1` so it fills the remaining space without crowding the icon buttons. - Drop the strict tape-count-must-match-current-machine guard on paste: with the user implicitly in MANUAL after auto-take-control, the mirror is the source of truth and any in-bounds snapshot should land. Replace with empty-snapshot lower bound + MAX_TAPES upper bound (the palette + worker hard limit). Import MAX_TAPES from caps. - Add `await tick()` before `setAllFromMirror()` since paste can now change tape count (1→N), matching reloadWorker's pattern. - Spec updated to reflect the new bounds + layout decisions. * docs: catch CLAUDE.md + README.md up with logStore + tapeSnapshot - Add `logStore.svelte.ts` to both lib/ trees (missed in #45 — the LogStore extraction landed but the file inventory was never updated). - Add `tapeSnapshot.ts` to both lib/ trees (this PR). - CLAUDE.md: extend MachineView's handlers list with onCopy/onPaste and a one-liner on the clipboard wiring + mirror-only paste semantics. - README.md: mention copy/paste of tape-block state in the user-facing feature blurb so it's discoverable. * test: wait for paused log entry before snapshotting baseline (E-continue-from-step) The E-continue-from-step test was racing LogStore's 16ms flush (introduced in #45). executionMode flips synchronously when the worker pauses, so the Continue button is visible immediately — but `log.report('paused at …')` is buffered behind the flush timer. Snapshotting pausedBefore right after the Continue-visible check could capture 0 instead of 1; after Continue + halt, the entry had finally flushed in and pausedAfter saw 1, failing the "no new pauses" assertion. Add an explicit `toBeVisible` wait on the paused log line before snapshotting so the baseline accurately reflects the post-flush DOM state. Latent since #45 merged; Playwright 1.60.0's timing changes made it deterministic on parallel runs. * chore: update dependencies to latest Minor/patch bumps across the board (no major version changes): - @codemirror/lang-javascript 6.2.0 → 6.2.5 - @codemirror/lint 6.8.0 → 6.9.6 - @codemirror/theme-one-dark 6.1.0 → 6.1.3 - @post-machine-js/machine 6.0.0 → 6.1.0 (debugger lockdown + instruction-derived state names) - @tabler/icons 3.41.1 → 3.44.0 - @turing-machine-js/machine 6.0.0 → 6.1.0 (fixes malformed `^6..0` range) - codemirror 6.0.1 → 6.0.2 - @playwright/test 1.50.0 → 1.60.0 - @testing-library/jest-dom 6.6.0 → 6.9.1 - @testing-library/svelte 5.2.0 → 5.3.1 - @tsconfig/svelte 5.0.4 → 5.0.8 - @types/node 25.6.2 → 25.8.0 - @vitest/coverage-v8 4.1.5 → 4.1.6 (sister of vitest) - eslint 10.3.0 → 10.4.0 - svelte 5.0.0 → 5.55.7 - svelte-check 4.0.0 → 4.4.8 - tslib 2.8.0 → 2.8.1 - typescript-eslint 8.0.0 → 8.59.3 - vite 8.0.11 → 8.0.13 - vitest 4.1.5 → 4.1.6 (paired with @vitest/coverage-v8 per peer constraint) No config changes required. All gates green: check / lint / 77 unit tests / 4 E2E tests / production build. * Bump to 1.0.0-alpha.14a785cd2a