From 5d102719d511a1e59ddee5ff34c32603e128794a Mon Sep 17 00:00:00 2001 From: Oliver Hofmann Date: Sun, 17 May 2026 17:09:57 +0200 Subject: [PATCH] fix: skip moderator/presenter in resolution; faster header text check --- src/teampulse/cli.py | 9 ++++++++- src/teampulse/resolver.py | 17 +++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/teampulse/cli.py b/src/teampulse/cli.py index bdc7592..ca2f63c 100644 --- a/src/teampulse/cli.py +++ b/src/teampulse/cli.py @@ -111,9 +111,16 @@ def main() -> None: while True: window = monitor.run_once(skip_existing=not include_history) - print(f"\nLöse {len(window.entries)} E-Mail-Adresse(n) auf...") + # Only resolve entries that appear in the final memo + # (moderator and presenter are excluded — no need to look up their email) + excluded = {window.moderator, window.presenter} + to_resolve = [e for e in window.entries if e.display_name not in excluded] + print(f"\nLöse {len(to_resolve)} E-Mail-Adresse(n) auf...") resolved_entries = [] for entry in window.entries: + if entry.display_name in excluded: + resolved_entries.append(AuditEntry(display_name=entry.display_name, email="")) + continue email = resolver.resolve(entry.display_name) print(f" {entry.display_name} → {email}") resolved_entries.append(AuditEntry(display_name=entry.display_name, email=email)) diff --git a/src/teampulse/resolver.py b/src/teampulse/resolver.py index ea85d77..b4e15f6 100644 --- a/src/teampulse/resolver.py +++ b/src/teampulse/resolver.py @@ -51,14 +51,19 @@ class Resolver: # Strategy 1: reply-message-header (channel meetings) — hover the avatar for header in self._page.query_selector_all("[data-tid='reply-message-header']"): try: + # Quick check on full header text before iterating spans + if display_name not in header.inner_text(): + continue + avatar = header.query_selector("[data-tid='reply-message-header-avatar']") + if avatar: + avatar.scroll_into_view_if_needed() + avatar.hover() + return True + # Fallback: hover the name span for span in header.query_selector_all("span"): if span.inner_text().strip() == display_name: - avatar = header.query_selector( - "[data-tid='reply-message-header-avatar']" - ) - target = avatar or span - target.scroll_into_view_if_needed() - target.hover() + span.scroll_into_view_if_needed() + span.hover() return True except Exception: continue