Disable hot swap of render engines (#10444)

This commit is contained in:
Belén Albeza 2026-06-26 15:04:52 +02:00 committed by GitHub
parent a1352fc79e
commit e9c0982a94
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 35 deletions

View File

@ -72,7 +72,6 @@
[app.main.refs :as refs]
[app.main.repo :as rp]
[app.main.router :as rt]
[app.main.store :as st]
[app.plugins.register :as preg]
[app.render-wasm :as wasm]
[app.render-wasm.api :as wasm.api]
@ -352,10 +351,8 @@
(let [stoper-s (rx/filter (ptk/type? ::finalize-workspace) stream)
rparams (rt/get-params state)
features (features/get-enabled-features state team-id)
;; since render-wasm/v1 can be hot-toggled by the user, we need to query it
;; from the state with active-feature?
render-wasm-enabled? #(features/active-feature? @st/state "render-wasm/v1")
render-wasm-ready? #(and (render-wasm-enabled?)
render-wasm-enabled? (features/active-feature? state "render-wasm/v1")
render-wasm-ready? #(and render-wasm-enabled?
wasm-state/context-initialized?
(not @wasm-state/context-lost?))]
@ -368,7 +365,7 @@
(rx/concat
;; Fetch all essential data that should be loaded before the file
(rx/merge
(if ^boolean (render-wasm-enabled?)
(if ^boolean render-wasm-enabled?
(->> (rx/from @wasm/module)
(rx/filter true?)
(rx/tap (fn [_]

View File

@ -1379,7 +1379,7 @@
[]
(ptk/reify ::watch-component-changes
ptk/WatchEvent
(watch [_ _ stream]
(watch [_ state stream]
(let [stopper-s
(->> stream
(rx/map ptk/type)
@ -1449,7 +1449,7 @@
(rx/tap #(log/trc :hint "buffer initialized")))]
(when (or (contains? cf/flags :component-thumbnails)
(features/active-feature? @st/state "render-wasm/v1"))
(features/active-feature? state "render-wasm/v1"))
(->> (rx/merge
changes-s
@ -1457,7 +1457,7 @@
;; change so single edits (fill, etc.) update instantly.
;; Non-WASM persists on every render, so it stays on the
;; debounced path below to avoid per-edit backend posts.
(if (features/active-feature? @st/state "render-wasm/v1")
(if (features/active-feature? state "render-wasm/v1")
(->> changes-s
(rx/filter (ptk/type? ::component-changed))
(rx/map deref)

View File

@ -959,32 +959,17 @@
ev-name (if (= next-renderer :wasm)
"enable-webgl-rendering"
"disable-webgl-rendering")]
(if (cf/external-feature-flag "renderer-hard-reload" "test")
;; Bare RPC + hard reload: skips `du/update-profile-props`, so
;; `features/recompute-features` is not run here; bootstrap
;; after reload resolves render-wasm/v1 from the saved profile.
(do
(->> (rx/zip
(rp/cmd! :update-profile-props {:props {:renderer next-renderer}})
(rx/filter (ptk/type? ::ev/chunk-persisted) st/stream))
(rx/timeout 2000 (rx/of :timeout))
(rx/subs! (fn [_]
(dom/reload-current-window true))
(fn [_]
(st/emit! (ntf/error (tr "errors.generic"))))))
(st/emit! (ev/event {::ev/name ev-name
::ev/origin "workspace:menu"})
(ptk/data-event ::ev/force-persist {})))
;; `update-profile-props` WatchEvent calls
;; `features/recompute-features`.
(st/emit! (ev/event {::ev/name ev-name
::ev/origin "workspace:menu"})
(du/update-profile-props {:renderer next-renderer})
(ntf/success (tr (if (= next-renderer :wasm)
"webgl.toast.webgl-render-enabled"
"webgl.toast.webgl-render-disabled"))))))))
(->> (rx/zip
(rp/cmd! :update-profile-props {:props {:renderer next-renderer}})
(rx/filter (ptk/type? ::ev/chunk-persisted) st/stream))
(rx/timeout 2000 (rx/of :timeout))
(rx/subs! (fn [_]
(dom/reload-current-window true))
(fn [_]
(st/emit! (ntf/error (tr "errors.generic"))))))
(st/emit! (ev/event {::ev/name ev-name
::ev/origin "workspace:menu"})
(ptk/data-event ::ev/force-persist {})))))
open-plugins-manager
(mf/use-fn