3.8.4 - Seconds of the world, unite!
Released on August 25, 2026 Enhancements ββ- Add time selection to the interval schedule anchor date by @devin-ai-integration[bot] in #22872
- Add a configurable base directory for included files by @desertaxle in #22855
- Add an index on
flow_run.deployment_idby @devin-ai-integration[bot] in #22890 - Open a parameters dialog when a quick run needs required parameters by @devin-ai-integration[bot] in #22903
- Prevent runners from overwriting handled flow-run outcomes by @desertaxle in #22821
- Fix
ProcessWorkerauto-uv after pull steps by @desertaxle in #22857 - Honor a
prefetch_secondsof 0 inBaseWorkerby @ckarnell in #22836 - Use
total_secondsin the worker polling healthcheck by @tushardev-365 in #22900 - Bind-mount the sdist so it stops shipping in the published image by @sujeito-operator in #22832
- Bind-mount the sdist in
client/Dockerfileso it stops shipping in the client image by @devin-ai-integration[bot] in #22833 - Fix the lateness label on flow run cards in the V2 UI by @devin-ai-integration[bot] in #22896
- Fix readable run durations in the V2 UI by @devin-ai-integration[bot] in #22922
- Carry rounded-up seconds into larger units in the V2 UI by @nolantonio in #22915
- Fix invisible run graph nodes by passing
skipUpdateTransform=falseby @vyagubov in #22849 - Fix inconsistent deployment status display on the flow detail page in the V2 UI by @vyagubov in #22901
- Do not overwrite in-flight schema form edits with stale parent values by @devin-ai-integration[bot] in #22905
- Follow CodeQL v4 releases by @prefect-renovate[bot] in #22924
- Add repository code review guidance by @desertaxle in #22906
- Use
pytest-splitfor Python 3.12/Postgres tests by @desertaxle in #22869 - Add opt-in Logfire test profiling by @desertaxle in #22852
- Pass the release ref through env in the prerelease tag check by @WAHIB-EL-KHADIRI in #22882
- Make tests independent of ambient OpenTelemetry context and non-setting
PREFECT_env vars by @devin-ai-integration[bot] in #22867 - Deflake concurrency lease tests by waiting for the API-visible slot release by @devin-ai-integration[bot] in #22884
- Scope the deployment name assertion to the breadcrumb in the flaky runs tab test by @devin-ai-integration[bot] in #22878
- Scope details assertions to the sidebar in the flaky deployment detail e2e tests by @devin-ai-integration[bot] in #22880
- Scope block cleanup to a single test in the flaky blocks e2e test by @devin-ai-integration[bot] in #22892
- Scope metadata assertions to the sidebar in the flaky work pool detail e2e test by @devin-ai-integration[bot] in #22899
- Update the Google Tag Manager ID in
docs.jsonby @zzstoatzz in #22891 - Add new Prefect Managed outbound IPs by @mitchnielsen in #22934
3.8.3 - Insert batching pun here
Released on August 13, 2026 Enhancements ββ- Stop fragmenting task run recorder bulk upserts by @chuqCTC in #22808
- Engage the auto-
uv runlauncher for process workers by @devin-ai-integration[bot] in #22723 - Show elapsed time for running flow runs in the V2 UI flow run header by @vyagubov in #22811
- Block submission when a required array parameter is emptied in the V2 UI by @devin-ai-integration[bot] in #22750
- Preserve a statement cache size of 0 by @ckarnell in #22767
- Reject option-like Git branch values by @desertaxle in #22819
- Stop leaking watcher-thread timeout enforcers by @devin-ai-integration[bot] in #22817
- Send basic auth header on the self-hosted events WebSocket handshake by @devin-ai-integration[bot] in #22813
- Confirm suspension events against the flow run instead of state-by-id by @joshuastagner in #22820
- Select a valid
anyOfbranch for record values in V2 UI schema forms by @devin-ai-integration[bot] in #22806 - Select the matching enum branch for
anyOfstring values in V2 UI schema forms by @devin-ai-integration[bot] in #22754 - Persist explicit null values from the schema form null branch by @devin-ai-integration[bot] in #22774
- Fix nested deployment parameter rendering in the V2 UI by @Abhinav0905 in #22760
- Render sanitized inline HTML in markdown content in the V2 UI by @devin-ai-integration[bot] in #22763
- Stop applying inline code styling inside fenced code blocks in the V2 UI by @devin-ai-integration[bot] in #22771
- Tidy up the task run recorder bulk upsert path by @devin-ai-integration[bot] in #22814
- Make
FileSystemLockManagerhold-timeout tests time-independent by @devin-ai-integration[bot] in #22716
- Close an unterminated code block in a
flowsdocstring by @cbrown1234 in #22802 - Update the order of the guide by @anthonyylee in #22687
- Fix the
.deploy()example in the versioning how-to guide by @uinstinct in #22810
3.8.2 - Array we there yet?
Released on August 07, 2026 Enhancements ββ- Add removable chips for multi-select enum array fields by @vyagubov in #22738
- Send a Prefect
User-Agenton WebSocket handshakes by @devin-ai-integration[bot] in #22706 - Virtualize the timezone select option list by @devin-ai-integration[bot] in #22740
- Show all timezones in the timezone select by @devin-ai-integration[bot] in #22686
- Propagate array item edits and link deployments from the flow page by @devin-ai-integration[bot] in #22726
- Preserve an empty array when clearing list parameter selections by @vyagubov in #22737
- Open the date picker calendar on the selected dateβs month by @devin-ai-integration[bot] in #22699
- Normalize settings paths for cross-OS context transport by @devin-ai-integration[bot] in #22700
- Raise
ValueErrorfor negative timeouts inPrefectFutureList.result,as_completed, andwaitby @kingsley-123 in #22692 - Fix a tooltip hiding behind a chart row by @uinstinct in #22707
- Release concurrency leases granted to callers that were cancelled mid-acquire by @devin-ai-integration[bot] in #22621
- Keep
setuptoolsin conda Docker images by @devin-ai-integration[bot] in #22743
- Migrate to Renovate and retire Dependabot by @jamiezieziula in #22719
- Document how
followsestablishes event ordering for automation triggers by @chrisguidry in #22710 - Correct event trigger examples to match actual matching semantics by @bunchesofdonald in #22690
- Fix incorrect examples in the global concurrency limits docs by @uinstinct in #22724
- Fix text not visible in an image by @uinstinct in #22661
- Fix docstring
Argsentries that name a parameter the function does not take by @darkdi in #22733 - List 3.7 and 3.8 release notes and link the Prefect Cloud changelog by @devin-ai-integration[bot] in #22702
3.8.1 - To relinquish, perchance to retry
Released on July 30, 2026 Enhancements ββ- Show tooltips for flow run state tabs in the V2 UI by @uinstinct in #22617
- Make
ConcurrencyContextexit cleanup best-effort by @devin-ai-integration[bot] in #22619 - Keep worker startup alive when the Prefect API is unreachable by @devin-ai-integration[bot] in #22640
- Make
PrefectFutureList.resulttimeout message reachable by @devin-ai-integration[bot] in #22634 - Render ANSI color escape codes in flow run logs in the V2 UI by @devin-ai-integration[bot] in #22653
- Confirm the exact suspension transition reported by a suspension event by @devin-ai-integration[bot] in #22649
- Allow any float precision on schema number inputs in the V2 UI by @AJ-ing in #22643
- Reject unknown fields for
FlowRunFilterand its nested criteria by @devin-ai-integration[bot] in #22659 - Relinquish evicted flow runs to infrastructure retry by @chuqCTC in #22622
- Fix saved block parameters in deployments by @desertaxle in #22568
- Preserve subprocesses after output stream errors by @desertaxle in #22573
- Clear stale expiration entries when a repossessed lease is missing by @devin-ai-integration[bot] in #22657
- Fix codespell error on unit test
TEST_BLOCK_CODE_BAD_SYNTAXon Windows by @g-ringeisen in #22642 - Drop unused global
mintlify-scrapeinstall from static analysis by @devin-ai-integration[bot] in #22677
- Add missing line break after imports in documentation examples by @uinstinct in #22627
- Document
SubmittingandInfrastructurePendingstates by @devin-ai-integration[bot] in #22660 - Fix flows documentation link to the getting started page by @uinstinct in #22648
3.8.0 - You had me at first paint
Released on July 23, 2026 Enhancements ββ- Add deployment filters to flow run triggers by @samiat4911 in #22319
- Make the V2 UI the default for self-hosted servers by @devin-ai-integration[bot] in #22519
- Copy additional options when using βCopy to new runβ in the V2 UI by @devin-ai-integration[bot] in #22567
- Add βCopy to new runβ to the flow run menu in the V2 UI by @devin-ai-integration[bot] in #22565
- Make URLs in run logs clickable in the V2 UI by @devin-ai-integration[bot] in #22496
- Allow year/month selection and manual typing in date inputs in the V2 UI by @devin-ai-integration[bot] in #22495
- Add composable worker initializer to
ProcessPoolTaskRunnerby @devin-ai-integration[bot] in #22591 - Canonicalize legacy setting names across settings handling and documentation generators by @devin-ai-integration[bot] in #22503
- Harden
RemoteFileSystempath resolution containment and rebuild absolute URLs by @devin-ai-integration[bot] in #22476 - Handle
module-pathentrypoints when generating default pull step by @devin-ai-integration[bot] in #22493 - Preserve empty
pull: []inprefect deployinstead of forcingset_working_directoryby @devin-ai-integration[bot] in #22490 - Prevent duplicate server-minted flow-run state timestamps by @devin-ai-integration[bot] in #22512
- Keep flow run watch alive across stream disconnects by @devin-ai-integration[bot] in #22550
- Fix
db_vacuumretention-override full scan ofevent_resourcesby @devin-ai-integration[bot] in #22536 - Record lease at acquisition so a cancelled acquire canβt leak a slot by @devin-ai-integration[bot] in #22542
- Fix deployment search empty state blocking typing in the V2 UI by @devin-ai-integration[bot] in #22497
- Guard deployment Parameters tab against missing schema properties by @devin-ai-integration[bot] in #22604
- Give
TaskRunFilterState.typeandTaskRunFilterState.namea default ofNoneby @chuenchen309 in #22526 - Preserve stdlib precedence in flow runs by @AkhilTrivediX in #22529
- Make zero-limit behavior consistent for core pagination endpoints by @devin-ai-integration[bot] in #22566
- Redact API key from lazy logging args in
ObfuscateApiKeyFilterby @devin-ai-integration[bot] in #22552 - Guard non-thread-safe
TTLCachein_read_toml_filewith a lock by @devin-ai-integration[bot] in #22571 - Fix
as_completedtimeout enforcement in worker threads and on Windows by @devin-ai-integration[bot] in #22607 - Enforce
READ COMMITTEDisolation for PostgreSQL server transactions by @devin-ai-integration[bot] in #22531
- Quote argument-hint YAML values so Copilot CLI
β₯1.0.65loads all skills by @thejesh23 in #22484 - Prevent recurring UI dependency PR failures by @devin-ai-integration[bot] in #22541
- Cover
truncated_toinutilities.textby @eeshsaxena in #22532 - Stabilize flaky cleanup renewal and flow-discovery log tests by @devin-ai-integration[bot] in #22572
- Clarify
/api/healthvs/api/readyfor Kubernetes probes by @br413 in #22500 - Document PrivateLink tenant authentication (
vpce-idbinding) by @jimid27 in #22498 - Update variables concept docs to reflect JSON values and dash support by @devin-ai-integration[bot] in #22501
- Fix title in run background tasks documentation by @uinstinct in #22561
- Make minor fixes in Docker workflow documentation by @uinstinct in #22585
- Update migration timeout guidance to reference
PREFECT_SERVER_DATABASE_MIGRATION_TIMEOUTby @github-actions[bot] in #22610 - Document
initializer/initargssupport inProcessPoolTaskRunnerby @github-actions[bot] in #22595 - Document new
IfPossibleDocker image pull policy option by @github-actions[bot] in #22515