portacode 0.3.16.dev2__tar.gz → 0.3.16.dev4__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.16.dev2 → portacode-0.3.16.dev4}/PKG-INFO +1 -1
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/_version.py +2 -2
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/project_state_handlers.py +24 -24
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/terminal.py +1 -1
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/.claude/agents/communication-manager.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/.claude/settings.local.json +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/.gitignore +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/.gitmodules +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/LICENSE +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/MANIFEST.in +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/Makefile +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/README.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/backup.sh +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/docker-compose.yaml +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/README.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/__init__.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/__main__.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/cli.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/README.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/__init__.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/client.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/README.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/base.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/registry.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/session.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/multiplex.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/data.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/keypair.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/service.py +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/requires.txt +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode.egg-info/top_level.txt +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/pyproject.toml +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/restore.sh +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/setup.cfg +0 -0
- {portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/setup.py +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.16.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 3, 16, '
|
|
20
|
+
__version__ = version = '0.3.16.dev4'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3, 16, 'dev4')
|
|
@@ -315,8 +315,8 @@ class ProjectStateManager:
|
|
|
315
315
|
git_status_summary=git_manager.get_status_summary()
|
|
316
316
|
)
|
|
317
317
|
|
|
318
|
-
# Load initial file structure
|
|
319
|
-
await self.
|
|
318
|
+
# Load initial file structure with recursive expanded folder loading
|
|
319
|
+
await self._load_expanded_folders_recursively(project_state)
|
|
320
320
|
|
|
321
321
|
# Start watching the project folder
|
|
322
322
|
self.file_watcher.start_watching(project_folder_path)
|
|
@@ -372,10 +372,6 @@ class ProjectStateManager:
|
|
|
372
372
|
|
|
373
373
|
if is_root:
|
|
374
374
|
project_state.items = items
|
|
375
|
-
# Load one level down for folders to enable immediate expansion
|
|
376
|
-
for item in items:
|
|
377
|
-
if item.is_directory:
|
|
378
|
-
await self._load_directory_items(project_state, item.path, parent_item=item)
|
|
379
375
|
elif parent_item:
|
|
380
376
|
parent_item.children = items
|
|
381
377
|
parent_item.is_loaded = True
|
|
@@ -383,6 +379,24 @@ class ProjectStateManager:
|
|
|
383
379
|
except (OSError, PermissionError) as e:
|
|
384
380
|
logger.error("Error loading directory %s: %s", directory_path, e)
|
|
385
381
|
|
|
382
|
+
async def _load_expanded_folders_recursively(self, project_state: ProjectState):
|
|
383
|
+
"""Load one level down for all expanded folders recursively."""
|
|
384
|
+
# First load root level
|
|
385
|
+
await self._load_directory_items(project_state, project_state.project_folder_path, is_root=True)
|
|
386
|
+
|
|
387
|
+
# Then load one level down for all expanded folders
|
|
388
|
+
for folder_path in project_state.expanded_folders:
|
|
389
|
+
folder_item = self._find_item_by_path(project_state.items, folder_path)
|
|
390
|
+
if folder_item and folder_item.is_directory:
|
|
391
|
+
# Load the folder's immediate children
|
|
392
|
+
await self._load_directory_items(project_state, folder_path, parent_item=folder_item)
|
|
393
|
+
|
|
394
|
+
# Load one level down for each subfolder in this expanded folder
|
|
395
|
+
if folder_item.children:
|
|
396
|
+
for child in folder_item.children:
|
|
397
|
+
if child.is_directory and not child.is_loaded:
|
|
398
|
+
await self._load_directory_items(project_state, child.path, parent_item=child)
|
|
399
|
+
|
|
386
400
|
async def expand_folder(self, project_id: str, folder_path: str) -> bool:
|
|
387
401
|
"""Expand a folder and load its contents."""
|
|
388
402
|
if project_id not in self.projects:
|
|
@@ -395,21 +409,14 @@ class ProjectStateManager:
|
|
|
395
409
|
if not folder_item or not folder_item.is_directory:
|
|
396
410
|
return False
|
|
397
411
|
|
|
398
|
-
# Load children if not already loaded
|
|
399
|
-
if not folder_item.is_loaded:
|
|
400
|
-
await self._load_directory_items(project_state, folder_path, parent_item=folder_item)
|
|
401
|
-
|
|
402
412
|
folder_item.is_expanded = True
|
|
403
413
|
project_state.expanded_folders.add(folder_path)
|
|
404
414
|
|
|
405
415
|
# Start watching this folder
|
|
406
416
|
self.file_watcher.start_watching(folder_path)
|
|
407
417
|
|
|
408
|
-
#
|
|
409
|
-
|
|
410
|
-
for child in folder_item.children:
|
|
411
|
-
if child.is_directory and not child.is_loaded:
|
|
412
|
-
await self._load_directory_items(project_state, child.path, parent_item=child)
|
|
418
|
+
# Reload the entire structure to ensure consistency with recursive loading
|
|
419
|
+
await self._load_expanded_folders_recursively(project_state)
|
|
413
420
|
|
|
414
421
|
self._write_debug_state()
|
|
415
422
|
return True
|
|
@@ -539,15 +546,8 @@ class ProjectStateManager:
|
|
|
539
546
|
self._write_debug_state()
|
|
540
547
|
|
|
541
548
|
async def _reload_visible_structures(self, project_state: ProjectState):
|
|
542
|
-
"""Reload
|
|
543
|
-
|
|
544
|
-
await self._load_directory_items(project_state, project_state.project_folder_path, is_root=True)
|
|
545
|
-
|
|
546
|
-
# Reload expanded folders
|
|
547
|
-
for folder_path in project_state.expanded_folders:
|
|
548
|
-
folder_item = self._find_item_by_path(project_state.items, folder_path)
|
|
549
|
-
if folder_item and folder_item.is_directory:
|
|
550
|
-
await self._load_directory_items(project_state, folder_path, parent_item=folder_item)
|
|
549
|
+
"""Reload all visible structures with recursive expanded folder loading."""
|
|
550
|
+
await self._load_expanded_folders_recursively(project_state)
|
|
551
551
|
|
|
552
552
|
async def _send_project_state_update(self, project_state: ProjectState):
|
|
553
553
|
"""Send project state update to clients."""
|
|
@@ -461,7 +461,7 @@ class TerminalManager:
|
|
|
461
461
|
"open_files": list(project_state.open_files),
|
|
462
462
|
"active_file": project_state.active_file,
|
|
463
463
|
"expanded_folders": list(project_state.expanded_folders),
|
|
464
|
-
"
|
|
464
|
+
"items": [manager._serialize_file_item(item) for item in project_state.items],
|
|
465
465
|
"timestamp": time.time(),
|
|
466
466
|
"client_sessions": [session_name] # Target this specific session
|
|
467
467
|
}
|
|
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.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/file_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/portacode/connection/handlers/system_handlers.py
RENAMED
|
File without changes
|
{portacode-0.3.16.dev2 → portacode-0.3.16.dev4}/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
|