cursorflow 2.1.1__py3-none-any.whl → 2.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cursorflow/__init__.py +1 -1
- cursorflow/cli.py +2 -1
- cursorflow/core/browser_controller.py +15 -5
- cursorflow/install_cursorflow_rules.py +4 -4
- cursorflow/log_sources/local_file.py +5 -1
- cursorflow/log_sources/ssh_remote.py +5 -1
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/METADATA +1 -1
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/RECORD +12 -12
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/WHEEL +0 -0
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/entry_points.txt +0 -0
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/licenses/LICENSE +0 -0
- {cursorflow-2.1.1.dist-info → cursorflow-2.1.3.dist-info}/top_level.txt +0 -0
cursorflow/__init__.py
CHANGED
cursorflow/cli.py
CHANGED
@@ -16,11 +16,12 @@ from rich.table import Table
|
|
16
16
|
from rich.progress import Progress, SpinnerColumn, TextColumn
|
17
17
|
|
18
18
|
from .core.agent import TestAgent
|
19
|
+
from . import __version__
|
19
20
|
|
20
21
|
console = Console()
|
21
22
|
|
22
23
|
@click.group()
|
23
|
-
@click.version_option(version=
|
24
|
+
@click.version_option(version=__version__)
|
24
25
|
def main():
|
25
26
|
"""Universal UI testing framework for any web technology"""
|
26
27
|
pass
|
@@ -419,11 +419,21 @@ class BrowserController:
|
|
419
419
|
"""
|
420
420
|
try:
|
421
421
|
# Process options with defaults
|
422
|
-
|
423
|
-
full_page =
|
424
|
-
clip_config =
|
425
|
-
mask_selectors =
|
426
|
-
quality =
|
422
|
+
raw_options = options or {}
|
423
|
+
full_page = raw_options.get("full_page", False)
|
424
|
+
clip_config = raw_options.get("clip")
|
425
|
+
mask_selectors = raw_options.get("mask", [])
|
426
|
+
quality = raw_options.get("quality", 80)
|
427
|
+
|
428
|
+
# Build actual screenshot options used (for metadata)
|
429
|
+
screenshot_options = {
|
430
|
+
"full_page": full_page,
|
431
|
+
"quality": quality
|
432
|
+
}
|
433
|
+
if clip_config:
|
434
|
+
screenshot_options["clip"] = clip_config
|
435
|
+
if mask_selectors:
|
436
|
+
screenshot_options["mask"] = mask_selectors
|
427
437
|
|
428
438
|
timestamp = int(time.time())
|
429
439
|
screenshot_filename = f".cursorflow/artifacts/screenshots/{name}_{timestamp}.png"
|
@@ -125,9 +125,9 @@ def create_config_template(project_path: Path, force: bool = False):
|
|
125
125
|
# Get current version
|
126
126
|
try:
|
127
127
|
import cursorflow
|
128
|
-
current_version = getattr(cursorflow, '__version__', '2.1.
|
128
|
+
current_version = getattr(cursorflow, '__version__', '2.1.3')
|
129
129
|
except ImportError:
|
130
|
-
current_version = '2.1.
|
130
|
+
current_version = '2.1.3'
|
131
131
|
|
132
132
|
if config_path.exists():
|
133
133
|
if not force:
|
@@ -302,9 +302,9 @@ def setup_update_checking(project_path: Path):
|
|
302
302
|
# Create initial version tracking
|
303
303
|
try:
|
304
304
|
import cursorflow
|
305
|
-
current_version = getattr(cursorflow, '__version__', '2.1.
|
305
|
+
current_version = getattr(cursorflow, '__version__', '2.1.3')
|
306
306
|
except ImportError:
|
307
|
-
current_version = '2.1.
|
307
|
+
current_version = '2.1.3'
|
308
308
|
|
309
309
|
version_info = {
|
310
310
|
"installed_version": current_version,
|
@@ -34,7 +34,7 @@ class LocalFileLogSource:
|
|
34
34
|
self.log_queue = queue.Queue()
|
35
35
|
self.tail_processes = {}
|
36
36
|
self.monitoring = False
|
37
|
-
|
37
|
+
# Note: connect() method implemented below for compatibility
|
38
38
|
|
39
39
|
import logging
|
40
40
|
self.logger = logging.getLogger(__name__)
|
@@ -158,6 +158,10 @@ class LocalFileLogSource:
|
|
158
158
|
|
159
159
|
return logs
|
160
160
|
|
161
|
+
async def connect(self):
|
162
|
+
"""Connect to log sources - compatibility method for log_collector"""
|
163
|
+
return await self.start_monitoring()
|
164
|
+
|
161
165
|
def get_recent_logs(self, seconds: int = 10) -> List[Dict]:
|
162
166
|
"""Get logs from the last N seconds"""
|
163
167
|
from datetime import timedelta
|
@@ -43,7 +43,7 @@ class SSHRemoteLogSource:
|
|
43
43
|
self.ssh_client = None
|
44
44
|
self.monitoring_threads = []
|
45
45
|
self.monitoring = False
|
46
|
-
|
46
|
+
# Note: connect() method implemented below for compatibility
|
47
47
|
|
48
48
|
self.logger = logging.getLogger(__name__)
|
49
49
|
|
@@ -161,6 +161,10 @@ class SSHRemoteLogSource:
|
|
161
161
|
|
162
162
|
return logs
|
163
163
|
|
164
|
+
async def connect(self):
|
165
|
+
"""Connect to SSH log sources - compatibility method for log_collector"""
|
166
|
+
return await self.start_monitoring()
|
167
|
+
|
164
168
|
def get_recent_logs(self, seconds: int = 10) -> List[Dict]:
|
165
169
|
"""Get logs from the last N seconds without stopping monitoring"""
|
166
170
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: cursorflow
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.3
|
4
4
|
Summary: 🔥 Complete page intelligence for AI-driven development with Hot Reload Intelligence - captures DOM, network, console, performance, HMR events, and comprehensive page analysis
|
5
5
|
Author-email: GeekWarrior Development <rbush@cooltheory.com>
|
6
6
|
License-Expression: MIT
|
@@ -1,11 +1,11 @@
|
|
1
|
-
cursorflow/__init__.py,sha256=
|
1
|
+
cursorflow/__init__.py,sha256=R0EASl-kqgr62b-7tqb7TBpEvWMWtBQs5VqOBtLxLF4,2763
|
2
2
|
cursorflow/auto_updater.py,sha256=oQ12TIMZ6Cm3HF-x9iRWFtvOLkRh-JWPqitS69-4roE,7851
|
3
|
-
cursorflow/cli.py,sha256=
|
4
|
-
cursorflow/install_cursorflow_rules.py,sha256=
|
3
|
+
cursorflow/cli.py,sha256=ca36aTHFLYpiaeQYoj3TB4o39CEfj3WWaePze8yNvdg,27280
|
4
|
+
cursorflow/install_cursorflow_rules.py,sha256=YBLbpyZT-ZLgq_VXhlu_ilruyttcQybaHPPfHYz7LnQ,11792
|
5
5
|
cursorflow/updater.py,sha256=rAST7STjw-SgKxn_jsQJWOoyEMia-MQVxpKMwzPRnOA,19573
|
6
6
|
cursorflow/core/agent.py,sha256=f3lecgEzDRDdGTVccAtorpLGfNJJ49bbsQAmgr0vNGg,10136
|
7
7
|
cursorflow/core/auth_handler.py,sha256=oRafO6ZdxoHryBIvHsrNV8TECed4GXpJsdEiH0KdPPk,17149
|
8
|
-
cursorflow/core/browser_controller.py,sha256=
|
8
|
+
cursorflow/core/browser_controller.py,sha256=KZXSrXInju09Q--D_ULej4_hc5s7qv-7ODxW4WS0nHw,131708
|
9
9
|
cursorflow/core/browser_engine.py,sha256=RpGtMOjyE7WW2BiR1cKcNnXNuiUbKt5svFgn1k3zozo,14415
|
10
10
|
cursorflow/core/css_iterator.py,sha256=whLCIwbHZEWaH1HCbmqhNX5zrh_fL-r3hsxKjYsukcE,16478
|
11
11
|
cursorflow/core/cursor_integration.py,sha256=MAeHjXYeqzaXnhskqkTDB-n5ixIHqapGe93X0lLKhws,67501
|
@@ -21,14 +21,14 @@ cursorflow/core/mockup_comparator.py,sha256=VLfEEaTgbcY0oTb-bhBD2uTbXGjbnOV7LXNV
|
|
21
21
|
cursorflow/core/persistent_session.py,sha256=FsEHj4wKkycmdp6PFRHv3g333Y74yqra0x_qhUTQpik,36075
|
22
22
|
cursorflow/core/report_generator.py,sha256=-vosfyrnfVyWDbAIMlMurl90xOXqBae8d6aLd9sEqiY,10113
|
23
23
|
cursorflow/core/trace_manager.py,sha256=Jj9ultZrL1atiZXfcRVI6ynCnnfqZM-X0_taxt-llJ0,7189
|
24
|
-
cursorflow/log_sources/local_file.py,sha256=
|
25
|
-
cursorflow/log_sources/ssh_remote.py,sha256=
|
24
|
+
cursorflow/log_sources/local_file.py,sha256=5Aa1qFe-GABydXr3Hskta6QCMjRrBOfrGGD3OJ9JBBw,7257
|
25
|
+
cursorflow/log_sources/ssh_remote.py,sha256=xLLxm5B95kUcLqMC7-oZUA66e1rU5LLeeBiR6Mw5syc,7642
|
26
26
|
cursorflow/rules/__init__.py,sha256=gPcA-IkhXj03sl7cvZV0wwo7CtEkcyuKs4y0F5oQbqE,458
|
27
27
|
cursorflow/rules/cursorflow-installation.mdc,sha256=PZN4hHpy2_g3EzD8BxZYhXF9A6YCvtMGaD3uOA7UVSs,9511
|
28
28
|
cursorflow/rules/cursorflow-usage.mdc,sha256=SAsJRmml8W1zE_jArZnRtygO9RmggjEzxGA6hxBJ-H4,18924
|
29
|
-
cursorflow-2.1.
|
30
|
-
cursorflow-2.1.
|
31
|
-
cursorflow-2.1.
|
32
|
-
cursorflow-2.1.
|
33
|
-
cursorflow-2.1.
|
34
|
-
cursorflow-2.1.
|
29
|
+
cursorflow-2.1.3.dist-info/licenses/LICENSE,sha256=e4QbjAsj3bW-xgQOvQelr8sGLYDoqc48k6cKgCr_pBU,1080
|
30
|
+
cursorflow-2.1.3.dist-info/METADATA,sha256=L-0-ZDt4lzJ9irtTBHAg1dPjKunBtew1GUy6ARzkIOc,12300
|
31
|
+
cursorflow-2.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
32
|
+
cursorflow-2.1.3.dist-info/entry_points.txt,sha256=-Ed_n4Uff7wClEtWS-Py6xmQabecB9f0QAOjX0w7ljA,51
|
33
|
+
cursorflow-2.1.3.dist-info/top_level.txt,sha256=t1UZwRyZP4u-ng2CEcNHmk_ZT4ibQxoihB2IjTF7ovc,11
|
34
|
+
cursorflow-2.1.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|