Skip to content

only offer real Webex and Whereby meeting links - #20

Open
dxnnystyles wants to merge 3 commits into
argahv:mainfrom
dxnnystyles:fix/webex-whereby-meeting-links
Open

dxnnystyles wants to merge 3 commits into
argahv:mainfrom
dxnnystyles:fix/webex-whereby-meeting-links

Conversation

@dxnnystyles

@dxnnystyles dxnnystyles commented Oct 22, 2026 •

Copy link
Copy Markdown

What this changes

keeps valid Webex meeting links and Whereby room links while excluding known marketing and account pages. closes #4.

Why

Webex event pages and Whereby information pages should not appear as meeting Join actions, while real meetings and rooms remain available.

How it was tested

  • swift test passes — 194 tests; run with sandbox disabled and an isolated temporary scratch path

  • python3 -I Tests/test_bridge.py passes (if Scripts/ or the event contract changed) — not applicable; neither changed

  • bash Scripts/build.sh builds — not run; no app bundle code changed

  • If I added, moved or removed a Swift file: I ran python3 Scripts/generate_project.py and committed NotchFlow.xcodeproj — not applicable; no Swift files were added, moved, or removed

  • Checked on a Mac — not run

  • Focused ContentRulesTests suite — 5 passed; covers Webex event and uppercase .php links, bare /join and missing-MTID negatives, Whereby non-room paths and mixed links, plus existing Zoom, Google Meet, and Teams behavior

  • git diff --check passed

Accessibility and motion

  • New controls have accessibility labels and work from the keyboard
  • Animations respect Reduce Motion; materials respect Reduce Transparency
  • Not applicable

Privacy and security

  • No new network requests, permissions or entitlements
  • No tokens, personal paths or private data in code, tests, screenshots or logs

@argahv argahv left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for picking this up. The marketing-page and lookalike-host negatives are exactly what #4 was after. One fix before it can go in, and two smaller points:

  • Standard Webex meeting links lose their Join button (Sources/NotchCore/ContentRules.swift:75). Webex invites put the site name in the path: https://acme.webex.com/acme/j.php?MTID=m…. candidate.path == "/j.php" only accepts the bare /j.php form, so the most common Webex link now returns nil (it matched before this PR). Checking the last path component (pathComponents.last == "j.php") would fix it. Please add that format to the test too.
  • Single-segment Whereby pages still count as rooms (line 78). This follows the rule #4 suggested, so that one's on me, but https://whereby.com/pricing or /login has one path segment and still gets Join. A short list of known non-room paths to exclude would cover it.
  • Suggestion: rather than more if entry.suffix == "…" branches in the loop, each service's rule could live in the hosts table as a per-entry check, as #4 suggested, so it sits in one place next to Zoom's and Teams'.

Happy to pair on any of it. Just ask here.

@dxnnystyles

Copy link
Copy Markdown
Author

thanks, fixed the webex site-path case (.../acme/j.php), added pricing/login exclusions for whereby, and moved the service-specific path checks next to the host rules. added regression coverage for both.

@argahv argahv left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. The site-path j.php links work again, and the rules read much better in the table. I ran about twenty links through it against main and found one more regression, plus the rest of the Whereby list:

  • Webex webinar and event links lose Join (Sources/NotchCore/ContentRules.swift:69). https://ieee.webex.com/ieee/onstage/g.php?MTID=e5f2a1b is Webex on main and nil here; it's the attendee link Webex Events sends. Path matching is also case-sensitive, so https://acme.webex.com/acme/J.php?MTID=m1 is nil too. Accepting any .php last component when the query has an MTID parameter, and comparing the path lowercased like the Whereby rule does, covers both.
  • A bare /join on any Webex subdomain counts (line 72). https://signin.webex.com/join and https://help.webex.com/join both get Join. Personal rooms are /join/<name>, so requiring a second component, as /meet/ already does, keeps those and drops the bare page.
  • More Whereby pages still count as rooms (line 77). /blog, /signup, /about, /information/, /user, /download and /embedded all get Join. Room names are free-form, so a fuller list of Whereby's own top-level pages is the practical fix. It matters most in event notes with several links: See https://whereby.com/blog and join https://whereby.com/team-room offers the blog.
  • Please add the webinar link, the uppercase J.php, signin.webex.com/join and that two-link sentence to the tests.

@dxnnystyles

Copy link
Copy Markdown
Author

thanks for the extra examples! I added the Webex event and uppercase .php cases, rejected bare /join pages, and excluded Whereby's listed non-room paths. the mixed-link test returns the room, and the Zoom, Google Meet, and Teams cases remain covered. the focused and full Swift suites pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stop treating any Webex or Whereby URL as a meeting "Join" link

2 participants