portacode 0.3.16.dev6__tar.gz → 0.3.16.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.16.dev6 → portacode-0.3.16.dev7}/PKG-INFO +1 -1
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/_version.py +2 -2
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/project_state_handlers.py +21 -6
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/.claude/agents/communication-manager.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/.claude/settings.local.json +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/.gitignore +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/.gitmodules +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/LICENSE +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/MANIFEST.in +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/Makefile +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/README.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/backup.sh +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/docker-compose.yaml +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/README.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/__init__.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/__main__.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/cli.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/README.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/__init__.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/client.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/README.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/base.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/registry.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/session.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/multiplex.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/terminal.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/data.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/keypair.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/service.py +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/requires.txt +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode.egg-info/top_level.txt +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/pyproject.toml +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/restore.sh +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/setup.cfg +0 -0
- {portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/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.dev7'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3, 16, 'dev7')
|
|
@@ -49,6 +49,7 @@ class FileItem:
|
|
|
49
49
|
is_git_tracked: Optional[bool] = None
|
|
50
50
|
git_status: Optional[str] = None
|
|
51
51
|
is_hidden: bool = False
|
|
52
|
+
is_ignored: bool = False
|
|
52
53
|
children: Optional[List['FileItem']] = None
|
|
53
54
|
is_expanded: bool = False
|
|
54
55
|
is_loaded: bool = False
|
|
@@ -107,12 +108,21 @@ class GitManager:
|
|
|
107
108
|
def get_file_status(self, file_path: str) -> Dict[str, Any]:
|
|
108
109
|
"""Get Git status for a specific file."""
|
|
109
110
|
if not self.is_git_repo or not self.repo:
|
|
110
|
-
return {"is_tracked": False, "status": None}
|
|
111
|
+
return {"is_tracked": False, "status": None, "is_ignored": False}
|
|
111
112
|
|
|
112
113
|
try:
|
|
113
114
|
# Convert to relative path from repo root
|
|
114
115
|
rel_path = os.path.relpath(file_path, self.repo.working_dir)
|
|
115
116
|
|
|
117
|
+
# Check if file is ignored
|
|
118
|
+
is_ignored = False
|
|
119
|
+
try:
|
|
120
|
+
# Use git check-ignore to see if file is ignored
|
|
121
|
+
self.repo.git.check_ignore(rel_path)
|
|
122
|
+
is_ignored = True
|
|
123
|
+
except Exception:
|
|
124
|
+
is_ignored = False
|
|
125
|
+
|
|
116
126
|
# Check if file is tracked
|
|
117
127
|
try:
|
|
118
128
|
self.repo.git.ls_files(rel_path, error_unmatch=True)
|
|
@@ -128,16 +138,18 @@ class GitManager:
|
|
|
128
138
|
status = "modified"
|
|
129
139
|
else:
|
|
130
140
|
status = "clean"
|
|
141
|
+
elif is_ignored:
|
|
142
|
+
status = "ignored"
|
|
131
143
|
else:
|
|
132
144
|
# Check if it's untracked
|
|
133
145
|
if os.path.exists(file_path):
|
|
134
146
|
status = "untracked"
|
|
135
147
|
|
|
136
|
-
return {"is_tracked": is_tracked, "status": status}
|
|
148
|
+
return {"is_tracked": is_tracked, "status": status, "is_ignored": is_ignored}
|
|
137
149
|
|
|
138
150
|
except Exception as e:
|
|
139
151
|
logger.debug("Error getting Git status for %s: %s", file_path, e)
|
|
140
|
-
return {"is_tracked": False, "status": None}
|
|
152
|
+
return {"is_tracked": False, "status": None, "is_ignored": False}
|
|
141
153
|
|
|
142
154
|
def get_status_summary(self) -> Dict[str, int]:
|
|
143
155
|
"""Get summary of Git status."""
|
|
@@ -342,22 +354,24 @@ class ProjectStateManager:
|
|
|
342
354
|
is_hidden = entry.name.startswith('.')
|
|
343
355
|
|
|
344
356
|
# Get Git status if available
|
|
345
|
-
git_info = {"is_tracked": False, "status": None}
|
|
357
|
+
git_info = {"is_tracked": False, "status": None, "is_ignored": False}
|
|
346
358
|
if git_manager:
|
|
347
359
|
git_info = git_manager.get_file_status(entry.path)
|
|
348
360
|
|
|
349
361
|
# Check if this directory is expanded
|
|
350
|
-
is_expanded =
|
|
362
|
+
is_expanded = False
|
|
351
363
|
|
|
352
364
|
file_item = FileItem(
|
|
353
365
|
name=entry.name,
|
|
354
366
|
path=entry.path,
|
|
355
367
|
is_directory=entry.is_dir(),
|
|
368
|
+
parent_path=directory_path,
|
|
356
369
|
size=stat_info.st_size if entry.is_file() else None,
|
|
357
370
|
modified_time=stat_info.st_mtime,
|
|
358
371
|
is_git_tracked=git_info["is_tracked"],
|
|
359
372
|
git_status=git_info["status"],
|
|
360
373
|
is_hidden=is_hidden,
|
|
374
|
+
is_ignored=git_info["is_ignored"],
|
|
361
375
|
is_expanded=is_expanded,
|
|
362
376
|
is_loaded=not entry.is_dir() # Files are always "loaded", directories need expansion
|
|
363
377
|
)
|
|
@@ -426,7 +440,7 @@ class ProjectStateManager:
|
|
|
426
440
|
is_hidden = entry.name.startswith('.')
|
|
427
441
|
|
|
428
442
|
# Get Git status if available
|
|
429
|
-
git_info = {"is_tracked": False, "status": None}
|
|
443
|
+
git_info = {"is_tracked": False, "status": None, "is_ignored": False}
|
|
430
444
|
if git_manager:
|
|
431
445
|
git_info = git_manager.get_file_status(entry.path)
|
|
432
446
|
|
|
@@ -446,6 +460,7 @@ class ProjectStateManager:
|
|
|
446
460
|
is_git_tracked=git_info["is_tracked"],
|
|
447
461
|
git_status=git_info["status"],
|
|
448
462
|
is_hidden=is_hidden,
|
|
463
|
+
is_ignored=git_info["is_ignored"],
|
|
449
464
|
is_expanded=is_expanded,
|
|
450
465
|
is_loaded=not entry.is_dir()
|
|
451
466
|
)
|
|
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.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/file_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.3.16.dev6 → portacode-0.3.16.dev7}/portacode/connection/handlers/system_handlers.py
RENAMED
|
File without changes
|
{portacode-0.3.16.dev6 → portacode-0.3.16.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
|