release: alpha 0.6.1 local player plugins and capture reconciliation
check / local-gate (push) Failing after 3m24s

This commit is contained in:
JWeBot Contributors
2026-10-15 05:01:40 +08:00
parent 84ba2193df
commit f7fedc54e4
40 changed files with 1346 additions and 38 deletions
+12 -10
View File
@@ -63,7 +63,7 @@ POLL_SECONDS = 1.0
STABLE_FRAMES = 2
DAMAGE_DEBOUNCE_SECONDS = 0.35
DAMAGE_MAX_BURST_SECONDS = 1.0
DAMAGE_HEARTBEAT_SECONDS = 60.0
DAMAGE_HEARTBEAT_SECONDS = 2.0
CAPTURE_BUFFER_FRAMES = 12
OCR_MESSAGE_CACHE_SIZE = 256
OCR_CACHE_REFRESH_SCANS = 120
@@ -1060,7 +1060,11 @@ class XDamageMonitor:
timeout = max(0.0, deadline - now)
if timeout == 0:
return first_relevant is not None
readable, _, _ = select.select([self._descriptor], [], [], timeout)
# Xlib may already hold events even when its socket is no longer readable.
if self._x11.XPending(self._display):
readable = [self._descriptor]
else:
readable, _, _ = select.select([self._descriptor], [], [], timeout)
if not readable:
return first_relevant is not None
if not self._drain_events():
@@ -1728,10 +1732,8 @@ class Recorder:
buffer.capacity,
)
while not buffer.closed:
if not monitor.wait_for_message_change():
if int(window_id()) != monitor.window_id:
raise RuntimeError("WeChat window changed")
continue
changed = monitor.wait_for_message_change()
source = "damage" if changed else "reconcile"
identifier = window_id()
if int(identifier) != monitor.window_id:
raise RuntimeError("WeChat window changed")
@@ -1746,7 +1748,7 @@ class Recorder:
* 1000,
outcome="captured",
phase="initial_capture",
source="damage",
source=source,
)
latest_synced = message_view_at_loaded_bottom(image)
if not latest_synced:
@@ -1757,7 +1759,7 @@ class Recorder:
elapsed_ms=(time.monotonic() - follow_started) * 1000,
outcome="followed" if followed else "lock_busy",
phase="follow_latest",
source="damage",
source=source,
)
if followed:
recapture_started = time.monotonic()
@@ -1770,7 +1772,7 @@ class Recorder:
* 1000,
outcome="captured",
phase="recapture",
source="damage",
source=source,
)
latest_synced = message_view_at_loaded_bottom(image)
crop = message_image(image)
@@ -1801,7 +1803,7 @@ class Recorder:
elapsed_ms=(time.monotonic() - capture_started) * 1000,
outcome=outcome,
depth=stats["depth"],
source="damage",
source=source,
)
if outcome == "closed":
return