* feat(frontend): add script recorder for offline replay of script test executions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(frontend): use Video icon for recording instead of Circle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(frontend): use Disc icon for recording
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(frontend): improve script recorder replay and recording privacy
- Record schema at capture time in ScriptRecording (lockfile unavailable for previews)
- Read schema from recording instead of job object in replay view
- Remove lockfile tab (not available via normal job API for preview jobs)
- Use text-xs for code/schema views, remove max-height limits
- Disable log download button in replay (endpoint won't work without real job)
- Truncate UUIDs in downloaded recordings (last 8 chars) for privacy
- Make activeReplay a $state so $derived(isReplay) in FlowStatusViewerInner
updates reactively, preventing stale reads that caused API calls during replay
- Use JSON round-trip instead of structuredClone to unwrap $state proxies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: update vite to 8 beta, vite-plugin-svelte to 7, vitest to 4.1 beta
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: add .npmrc with legacy-peer-deps for vite 8 beta
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* update: bump Svelte ecosystem to latest Vite 7-compatible versions
Bump svelte (5.39→5.53), @sveltejs/kit (2.49→2.53), vite-plugin-svelte
(6.2.1→6.2.4), svelte-check (4.3→4.4), @sveltejs/package (2.5.4→2.5.7).
Stays on vite-plugin-svelte 6.x to avoid requiring Vite 8.
Fix DucklakeSettings.svelte missing lang="ts" on instance script tag
(new compiler rejects import type syntax in plain JS blocks).
Fix getCurrentModel race condition where changeMode was called reactively
before copilot info loaded, causing "No model selected" error on init.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: move early return guard before mode assignment in changeMode
Avoid inconsistent state where this.mode is set to SCRIPT but
systemMessage/tools/helpers are stale from the previous mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add the ability to record a flow test execution and replay it offline
without any API calls. This is useful for debugging, sharing, and
reviewing flow executions outside of a running Windmill instance.
Recording:
- "Test flow & record" option in the flow editor three-dots menu
opens the test drawer in recording mode
- While in recording mode, running a test captures all job events
(SSE streams, sub-job completions, flow status transitions) along
with the flow definition into a downloadable JSON file
- Recording state module (flowRecording.svelte.ts) manages active
recording/replay instances at the module level
Replay:
- Standalone /replay page where users upload a recording JSON file
and watch the flow execute with real-time status transitions
- FlowRecordingReplay component handles timestamp rebasing, event
ordering fixes, and drives FlowStatusViewer with recorded data
- JobLoader intercepts replay mode to feed recorded events via
timed callbacks instead of real SSE/polling
- FlowStatusViewerInner and FlowLogViewer guard all API call sites
to prevent network requests during replay
- Job links, log downloads, and resource lookups are suppressed
in replay mode
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix: parse Python datetime.datetime and datetime.date type annotations correctly
The Python parser only matched ExprKind::Name for type annotations, so
`datetime.datetime` (an Attribute expression) silently fell through to
Typ::Unknown and no datetime picker was shown in the UI.
- Extend parse_expr to resolve `datetime.*` attribute access (alongside
the existing `wmill.*` handling)
- Add Typ::Date variant for `datetime.date` → JSON schema format "date"
- Update python worker to import and convert `date.fromisoformat()`
- Update argSigToJsonSchemaType, AI types, schema validation, and SQL
datatype wasm for the new Date variant
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* all
* all
* all
* all
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>