@@ -62,17 +62,36 @@ class BinaryVerificationError(RuntimeError):
6262# Auto-update check interval (1 hour)
6363UPDATE_CHECK_INTERVAL = 3600
6464
65+ # Pro Chromium major shown in the free-tier welcome banner. Bump at each Pro
66+ # major release (there is no local constant to derive it from — the live Pro
67+ # version comes from the network, which we don't call just to print a banner).
68+ PRO_MAJOR = "148"
6569
66- def _show_welcome () -> None :
67- """Show welcome message on first launch. Uses a marker file to show only once."""
70+
71+ def _show_welcome (pro : bool = False ) -> None :
72+ """Show welcome message on first launch. Uses a marker file to show only once.
73+
74+ The Pro-upsell line is shown to free-tier users only; Pro users get a plain
75+ banner (no "running free tier" message, which would be false for them).
76+ """
6877 marker = get_cache_dir () / ".welcome_shown"
6978 if marker .exists ():
7079 return
7180 sys .stderr .write ("\n " )
7281 sys .stderr .write (" CloakBrowser — stealth Chromium for automation\n " )
7382 sys .stderr .write (" https://github.com/CloakHQ/CloakBrowser\n " )
7483 sys .stderr .write ("\n " )
75- sys .stderr .write (" Donate? https://ko-fi.com/cloakhq\n " )
84+ if pro :
85+ sys .stderr .write (
86+ f" CloakBrowser Pro active (v{ PRO_MAJOR } ) — latest binary, newest patches.\n "
87+ )
88+ else :
89+ free_major = CHROMIUM_VERSION .split ("." )[0 ]
90+ sys .stderr .write (
91+ f" Running free tier (v{ free_major } ). "
92+ f"Pro = latest binary (v{ PRO_MAJOR } ) + newest anti-bot patches.\n "
93+ )
94+ sys .stderr .write (" Stay ahead of detection → https://cloakbrowser.dev\n " )
7695 sys .stderr .write (" Star us if CloakBrowser helps your project!\n " )
7796 sys .stderr .write ("\n " )
7897 try :
@@ -232,7 +251,7 @@ def _ensure_pro_binary(license_key: str) -> str:
232251
233252 if binary_path .exists () and _is_executable (binary_path ):
234253 logger .debug ("Pro binary found in cache: %s (version %s)" , binary_path , effective )
235- _show_welcome ()
254+ _show_welcome (pro = True )
236255 _maybe_trigger_pro_update_check (license_key )
237256 return str (binary_path )
238257
@@ -243,7 +262,7 @@ def _ensure_pro_binary(license_key: str) -> str:
243262 binary_path = get_binary_path (version , pro = True )
244263 if binary_path .exists () and _is_executable (binary_path ):
245264 logger .debug ("Pro binary found in cache: %s (version %s)" , binary_path , version )
246- _show_welcome ()
265+ _show_welcome (pro = True )
247266 return str (binary_path )
248267
249268 logger .info ("Downloading Pro Chromium %s for %s..." , version , get_platform_tag ())
@@ -264,7 +283,7 @@ def _ensure_pro_binary(license_key: str) -> str:
264283 except OSError :
265284 pass
266285
267- _show_welcome ()
286+ _show_welcome (pro = True )
268287 return str (binary_path )
269288
270289
0 commit comments