portacode 0.3.20.dev6__tar.gz → 0.3.20.dev7__tar.gz
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.
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/PKG-INFO +1 -1
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/_version.py +2 -2
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/centralized_manager.py +8 -2
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/simplified_file_watcher.py +28 -4
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/.claude/agents/communication-manager.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/.claude/settings.local.json +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/.gitignore +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/.gitmodules +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/LICENSE +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/MANIFEST.in +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/Makefile +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/backup.sh +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/docker-compose.yaml +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/__main__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/cli.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/client.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/base.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/centralized_handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/centralized_state.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/git_manager.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/manager.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/models.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/utils.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state_handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/registry.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/session.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/tab_factory.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/multiplex.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/terminal.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/data.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/keypair.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/service.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/requires.txt +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode.egg-info/top_level.txt +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/pyproject.toml +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/restore.sh +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/run_tests.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/setup.cfg +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/setup.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test.sh +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_device_online.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_file_operations.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_login_flow.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_navigate_testing_folder.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_terminal_interaction.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_terminal_start.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/.env.example +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/README.md +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/cli.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/__init__.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/base_test.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/cli_manager.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/hierarchical_runner.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/playwright_manager.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/runner.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/shared_cli_manager.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/test_discovery.py +0 -0
- {portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/requirements.txt +0 -0
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '0.3.20.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 3, 20, '
|
|
20
|
+
__version__ = version = '0.3.20.dev7'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3, 20, 'dev7')
|
|
@@ -186,8 +186,9 @@ class CentralizedProjectStateManager:
|
|
|
186
186
|
try:
|
|
187
187
|
with os.scandir(folder_path) as entries:
|
|
188
188
|
for entry in entries:
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
# Skip all hidden files including .git - git monitoring is handled separately
|
|
190
|
+
if entry.name.startswith('.'):
|
|
191
|
+
continue
|
|
191
192
|
|
|
192
193
|
stat_info = entry.stat()
|
|
193
194
|
item = FileItem(
|
|
@@ -301,6 +302,11 @@ class CentralizedProjectStateManager:
|
|
|
301
302
|
if not state:
|
|
302
303
|
return False
|
|
303
304
|
|
|
305
|
+
# Skip .git directories entirely
|
|
306
|
+
if '.git' in Path(folder_path).parts or folder_path.endswith('.git'):
|
|
307
|
+
logger.debug("Skipping expansion of .git directory: %s", folder_path)
|
|
308
|
+
return False
|
|
309
|
+
|
|
304
310
|
monitored_folders = state.monitored_folders.copy()
|
|
305
311
|
|
|
306
312
|
# Find and expand the folder
|
|
@@ -61,9 +61,14 @@ class SimplifiedFileSystemWatcher:
|
|
|
61
61
|
logger.warning("Cannot start watching %s - watchdog not available", path)
|
|
62
62
|
return
|
|
63
63
|
|
|
64
|
+
# Skip .git directories entirely
|
|
65
|
+
if '.git' in Path(path).parts or path.endswith('.git'):
|
|
66
|
+
logger.debug("Skipping .git directory for watching: %s", path)
|
|
67
|
+
return
|
|
68
|
+
|
|
64
69
|
if path not in self.watched_paths:
|
|
65
70
|
try:
|
|
66
|
-
# Only watch for non-git file changes
|
|
71
|
+
# Only watch for non-git file changes, non-recursive to avoid .git monitoring
|
|
67
72
|
self.observer.schedule(self.event_handler, path, recursive=False)
|
|
68
73
|
self.watched_paths.add(path)
|
|
69
74
|
logger.info("Started watching path for file changes: %s", path)
|
|
@@ -109,11 +114,30 @@ class SimplifiedEventHandler(FileSystemEventHandler):
|
|
|
109
114
|
return
|
|
110
115
|
|
|
111
116
|
# Skip git directories entirely - they're handled by periodic polling
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
src_path_str = str(event.src_path)
|
|
118
|
+
path_obj = Path(src_path_str)
|
|
119
|
+
|
|
120
|
+
# Multiple checks to ensure no .git paths are processed
|
|
121
|
+
if ('.git' in path_obj.parts or
|
|
122
|
+
'.git' in src_path_str or
|
|
123
|
+
src_path_str.endswith('.git') or
|
|
124
|
+
'/.git/' in src_path_str or
|
|
125
|
+
'\\.git\\' in src_path_str):
|
|
126
|
+
logger.debug("Skipping git directory event: %s", src_path_str)
|
|
115
127
|
return
|
|
116
128
|
|
|
129
|
+
# Also check destination path for move events
|
|
130
|
+
if hasattr(event, 'dest_path') and event.dest_path:
|
|
131
|
+
dest_path_str = str(event.dest_path)
|
|
132
|
+
dest_path_obj = Path(dest_path_str)
|
|
133
|
+
if ('.git' in dest_path_obj.parts or
|
|
134
|
+
'.git' in dest_path_str or
|
|
135
|
+
dest_path_str.endswith('.git') or
|
|
136
|
+
'/.git/' in dest_path_str or
|
|
137
|
+
'\\.git\\' in dest_path_str):
|
|
138
|
+
logger.debug("Skipping git directory move event: %s -> %s", src_path_str, dest_path_str)
|
|
139
|
+
return
|
|
140
|
+
|
|
117
141
|
# Skip opened/closed events that don't indicate file modifications
|
|
118
142
|
if event.event_type in ('opened', 'closed'):
|
|
119
143
|
logger.debug("Skipping opened/closed event: %s", event.event_type)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/file_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/project_state/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/system_handlers.py
RENAMED
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/tab_factory.py
RENAMED
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/portacode/connection/handlers/terminal_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/test_modules/test_navigate_testing_folder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/hierarchical_runner.py
RENAMED
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/playwright_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{portacode-0.3.20.dev6 → portacode-0.3.20.dev7}/testing_framework/core/shared_cli_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|