mirror of
https://github.com/spoopyghosty0/frameport.git
synced 2026-10-17 18:03:05 +02:00
Flet packs a patch by iterating each control's _values dict; Prop.__set__ adds/removes keys there without a lock. A property set on a background thread (the live Frame card's sample, job progress, the library loader) while the event loop packed a patch raised "dictionary changed size during iteration" and the update was lost (seen in CI: a sidebar click left the old page showing). serialize_flet_updates() now makes property writes take the same re-entrant lock as patches (app.FLET_LOCK). Reproduced with Flet's own encoder: 16 failures in 4 s before, none after; test_property_writes_wait_for_a_patch_being_packed. The showcase server and ui_smoke serialize like the app. Tour re-recorded with the fix (clean, no fallback clicks).