portacode 1.3.25__tar.gz → 1.3.26__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.
Potentially problematic release.
This version of portacode might be problematic. Click here for more details.
- {portacode-1.3.25 → portacode-1.3.26}/PKG-INFO +18 -41
- {portacode-1.3.25 → portacode-1.3.26}/README.md +17 -40
- {portacode-1.3.25 → portacode-1.3.26}/docker-compose.yaml +1 -3
- {portacode-1.3.25 → portacode-1.3.26}/portacode/_version.py +2 -2
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/PKG-INFO +18 -41
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/SOURCES.txt +3 -1
- portacode-1.3.26/todo/issues/indefinite_resource_loading.md +5 -0
- portacode-1.3.26/todo/issues/premature_terminal_exit.md +66 -0
- {portacode-1.3.25 → portacode-1.3.26}/.claude/agents/communication-manager.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/.claude/settings.local.json +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/.gitignore +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/.gitmodules +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/LICENSE +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/MANIFEST.in +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/Makefile +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/backup.sh +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/connect.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/connect.sh +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/__main__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/cli.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/client.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/base.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/chunked_content.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_aware_file_handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/git_manager.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/manager.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/models.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/utils.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state_handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/registry.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/session.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/tab_factory.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/multiplex.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/connection/terminal.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/data.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/keypair.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/logging_categories.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode/service.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/requires.txt +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/portacode.egg-info/top_level.txt +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/pyproject.toml +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/restore.sh +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/run_tests.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/setup.cfg +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/setup.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test.sh +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_device_online.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_file_operations.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_git_status_ui.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_login_flow.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_navigate_testing_folder.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_terminal_buffer_performance.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_terminal_interaction.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_terminal_loading_race_condition.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/test_modules/test_terminal_start.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/.env.example +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/README.md +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/cli.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/__init__.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/base_test.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/cli_manager.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/hierarchical_runner.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/playwright_manager.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/runner.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/shared_cli_manager.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/core/test_discovery.py +0 -0
- {portacode-1.3.25 → portacode-1.3.26}/testing_framework/requirements.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: portacode
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.26
|
|
4
4
|
Summary: Portacode CLI client and SDK
|
|
5
5
|
Home-page: https://github.com/portacode/portacode
|
|
6
6
|
Author: Meena Erian
|
|
@@ -43,7 +43,7 @@ Dynamic: summary
|
|
|
43
43
|
|
|
44
44
|
**An AI-first, mobile-first IDE and admin tool, made with love and passion by software engineers, for software engineers.**
|
|
45
45
|
|
|
46
|
-
Portacode transforms any
|
|
46
|
+
Portacode transforms any device with python into a remotely accessible development environment. Access your home lab, server or even embedded system chip from your phone, code on your desktop or your smartphone from anywhere, or help a colleague debug their server - all through a beautiful web interface designed for the modern developer.
|
|
47
47
|
|
|
48
48
|
## ✨ Why Portacode?
|
|
49
49
|
|
|
@@ -86,40 +86,9 @@ Once connected, you can:
|
|
|
86
86
|
|
|
87
87
|
## 💡 Use Cases
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
portacode connect
|
|
93
|
-
|
|
94
|
-
# Now code, build, and debug from anywhere - even your phone
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Server Administration
|
|
98
|
-
```bash
|
|
99
|
-
# For a persistent connection, install system-wide first
|
|
100
|
-
sudo pip install portacode --system
|
|
101
|
-
|
|
102
|
-
# Then install as a service
|
|
103
|
-
sudo portacode service install
|
|
104
|
-
|
|
105
|
-
# Your server is now accessible 24/7 from the web dashboard
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Mobile Development
|
|
109
|
-
```bash
|
|
110
|
-
# Connect your desktop/laptop
|
|
111
|
-
portacode connect
|
|
112
|
-
|
|
113
|
-
# Code on-the-go from your mobile device with a full IDE experience
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Team Collaboration
|
|
117
|
-
```bash
|
|
118
|
-
# Connect shared development environments
|
|
119
|
-
portacode connect
|
|
120
|
-
|
|
121
|
-
# Enable team members to access shared resources securely
|
|
122
|
-
```
|
|
89
|
+
- **Remote Development**: Code, build, and debug from anywhere - even your phone
|
|
90
|
+
- **Server Administration**: 24/7 server access with persistent service installation
|
|
91
|
+
- **Mobile Development**: Full IDE experience on mobile devices
|
|
123
92
|
|
|
124
93
|
## 🔧 Essential Commands
|
|
125
94
|
|
|
@@ -140,19 +109,21 @@ portacode --help
|
|
|
140
109
|
|
|
141
110
|
### Service Management
|
|
142
111
|
```bash
|
|
143
|
-
#
|
|
112
|
+
# First, authenticate your device
|
|
113
|
+
portacode connect
|
|
114
|
+
|
|
115
|
+
# For system services, install package system-wide
|
|
144
116
|
sudo pip install portacode --system
|
|
145
117
|
|
|
146
118
|
# Install persistent service (auto-start on boot)
|
|
147
119
|
sudo portacode service install
|
|
148
120
|
|
|
149
|
-
# Check service status
|
|
121
|
+
# Check service status (use -v for verbose debugging)
|
|
150
122
|
sudo portacode service status
|
|
123
|
+
sudo portacode service status -v
|
|
151
124
|
|
|
152
|
-
# Stop the service
|
|
125
|
+
# Stop/remove the service
|
|
153
126
|
sudo portacode service stop
|
|
154
|
-
|
|
155
|
-
# Remove the service
|
|
156
127
|
sudo portacode service uninstall
|
|
157
128
|
```
|
|
158
129
|
|
|
@@ -194,11 +165,17 @@ sudo portacode service status --verbose
|
|
|
194
165
|
|
|
195
166
|
### Service Installation Issues
|
|
196
167
|
```bash
|
|
168
|
+
# First authenticate your device
|
|
169
|
+
portacode connect
|
|
170
|
+
|
|
197
171
|
# If service commands fail, ensure system-wide installation
|
|
198
172
|
sudo pip install portacode --system
|
|
199
173
|
|
|
200
174
|
# Then try service installation again
|
|
201
175
|
sudo portacode service install
|
|
176
|
+
|
|
177
|
+
# Use verbose status to debug connection issues
|
|
178
|
+
sudo portacode service status -v
|
|
202
179
|
```
|
|
203
180
|
|
|
204
181
|
### Clipboard Issues (Linux)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**An AI-first, mobile-first IDE and admin tool, made with love and passion by software engineers, for software engineers.**
|
|
4
4
|
|
|
5
|
-
Portacode transforms any
|
|
5
|
+
Portacode transforms any device with python into a remotely accessible development environment. Access your home lab, server or even embedded system chip from your phone, code on your desktop or your smartphone from anywhere, or help a colleague debug their server - all through a beautiful web interface designed for the modern developer.
|
|
6
6
|
|
|
7
7
|
## ✨ Why Portacode?
|
|
8
8
|
|
|
@@ -45,40 +45,9 @@ Once connected, you can:
|
|
|
45
45
|
|
|
46
46
|
## 💡 Use Cases
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
portacode connect
|
|
52
|
-
|
|
53
|
-
# Now code, build, and debug from anywhere - even your phone
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Server Administration
|
|
57
|
-
```bash
|
|
58
|
-
# For a persistent connection, install system-wide first
|
|
59
|
-
sudo pip install portacode --system
|
|
60
|
-
|
|
61
|
-
# Then install as a service
|
|
62
|
-
sudo portacode service install
|
|
63
|
-
|
|
64
|
-
# Your server is now accessible 24/7 from the web dashboard
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Mobile Development
|
|
68
|
-
```bash
|
|
69
|
-
# Connect your desktop/laptop
|
|
70
|
-
portacode connect
|
|
71
|
-
|
|
72
|
-
# Code on-the-go from your mobile device with a full IDE experience
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Team Collaboration
|
|
76
|
-
```bash
|
|
77
|
-
# Connect shared development environments
|
|
78
|
-
portacode connect
|
|
79
|
-
|
|
80
|
-
# Enable team members to access shared resources securely
|
|
81
|
-
```
|
|
48
|
+
- **Remote Development**: Code, build, and debug from anywhere - even your phone
|
|
49
|
+
- **Server Administration**: 24/7 server access with persistent service installation
|
|
50
|
+
- **Mobile Development**: Full IDE experience on mobile devices
|
|
82
51
|
|
|
83
52
|
## 🔧 Essential Commands
|
|
84
53
|
|
|
@@ -99,19 +68,21 @@ portacode --help
|
|
|
99
68
|
|
|
100
69
|
### Service Management
|
|
101
70
|
```bash
|
|
102
|
-
#
|
|
71
|
+
# First, authenticate your device
|
|
72
|
+
portacode connect
|
|
73
|
+
|
|
74
|
+
# For system services, install package system-wide
|
|
103
75
|
sudo pip install portacode --system
|
|
104
76
|
|
|
105
77
|
# Install persistent service (auto-start on boot)
|
|
106
78
|
sudo portacode service install
|
|
107
79
|
|
|
108
|
-
# Check service status
|
|
80
|
+
# Check service status (use -v for verbose debugging)
|
|
109
81
|
sudo portacode service status
|
|
82
|
+
sudo portacode service status -v
|
|
110
83
|
|
|
111
|
-
# Stop the service
|
|
84
|
+
# Stop/remove the service
|
|
112
85
|
sudo portacode service stop
|
|
113
|
-
|
|
114
|
-
# Remove the service
|
|
115
86
|
sudo portacode service uninstall
|
|
116
87
|
```
|
|
117
88
|
|
|
@@ -153,11 +124,17 @@ sudo portacode service status --verbose
|
|
|
153
124
|
|
|
154
125
|
### Service Installation Issues
|
|
155
126
|
```bash
|
|
127
|
+
# First authenticate your device
|
|
128
|
+
portacode connect
|
|
129
|
+
|
|
156
130
|
# If service commands fail, ensure system-wide installation
|
|
157
131
|
sudo pip install portacode --system
|
|
158
132
|
|
|
159
133
|
# Then try service installation again
|
|
160
134
|
sudo portacode service install
|
|
135
|
+
|
|
136
|
+
# Use verbose status to debug connection issues
|
|
137
|
+
sudo portacode service status -v
|
|
161
138
|
```
|
|
162
139
|
|
|
163
140
|
### Clipboard Issues (Linux)
|
|
@@ -21,11 +21,9 @@ services:
|
|
|
21
21
|
dockerfile: Dockerfile
|
|
22
22
|
container_name: portacode-django
|
|
23
23
|
restart: unless-stopped
|
|
24
|
-
command: ["bash", "-c", "python manage.py migrate && python manage.py collectstatic --noinput &&
|
|
24
|
+
command: ["bash", "-c", "python manage.py migrate && python manage.py collectstatic --noinput && daphne portacode_django.asgi:application -b 0.0.0.0 -p 8001"]
|
|
25
25
|
env_file:
|
|
26
26
|
- main.env
|
|
27
|
-
environment:
|
|
28
|
-
- DJANGO_DEBUG=${DJANGO_DEBUG:-false}
|
|
29
27
|
depends_on:
|
|
30
28
|
db:
|
|
31
29
|
condition: service_healthy
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.3.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 3,
|
|
31
|
+
__version__ = version = '1.3.26'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 3, 26)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: portacode
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.26
|
|
4
4
|
Summary: Portacode CLI client and SDK
|
|
5
5
|
Home-page: https://github.com/portacode/portacode
|
|
6
6
|
Author: Meena Erian
|
|
@@ -43,7 +43,7 @@ Dynamic: summary
|
|
|
43
43
|
|
|
44
44
|
**An AI-first, mobile-first IDE and admin tool, made with love and passion by software engineers, for software engineers.**
|
|
45
45
|
|
|
46
|
-
Portacode transforms any
|
|
46
|
+
Portacode transforms any device with python into a remotely accessible development environment. Access your home lab, server or even embedded system chip from your phone, code on your desktop or your smartphone from anywhere, or help a colleague debug their server - all through a beautiful web interface designed for the modern developer.
|
|
47
47
|
|
|
48
48
|
## ✨ Why Portacode?
|
|
49
49
|
|
|
@@ -86,40 +86,9 @@ Once connected, you can:
|
|
|
86
86
|
|
|
87
87
|
## 💡 Use Cases
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
portacode connect
|
|
93
|
-
|
|
94
|
-
# Now code, build, and debug from anywhere - even your phone
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Server Administration
|
|
98
|
-
```bash
|
|
99
|
-
# For a persistent connection, install system-wide first
|
|
100
|
-
sudo pip install portacode --system
|
|
101
|
-
|
|
102
|
-
# Then install as a service
|
|
103
|
-
sudo portacode service install
|
|
104
|
-
|
|
105
|
-
# Your server is now accessible 24/7 from the web dashboard
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Mobile Development
|
|
109
|
-
```bash
|
|
110
|
-
# Connect your desktop/laptop
|
|
111
|
-
portacode connect
|
|
112
|
-
|
|
113
|
-
# Code on-the-go from your mobile device with a full IDE experience
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Team Collaboration
|
|
117
|
-
```bash
|
|
118
|
-
# Connect shared development environments
|
|
119
|
-
portacode connect
|
|
120
|
-
|
|
121
|
-
# Enable team members to access shared resources securely
|
|
122
|
-
```
|
|
89
|
+
- **Remote Development**: Code, build, and debug from anywhere - even your phone
|
|
90
|
+
- **Server Administration**: 24/7 server access with persistent service installation
|
|
91
|
+
- **Mobile Development**: Full IDE experience on mobile devices
|
|
123
92
|
|
|
124
93
|
## 🔧 Essential Commands
|
|
125
94
|
|
|
@@ -140,19 +109,21 @@ portacode --help
|
|
|
140
109
|
|
|
141
110
|
### Service Management
|
|
142
111
|
```bash
|
|
143
|
-
#
|
|
112
|
+
# First, authenticate your device
|
|
113
|
+
portacode connect
|
|
114
|
+
|
|
115
|
+
# For system services, install package system-wide
|
|
144
116
|
sudo pip install portacode --system
|
|
145
117
|
|
|
146
118
|
# Install persistent service (auto-start on boot)
|
|
147
119
|
sudo portacode service install
|
|
148
120
|
|
|
149
|
-
# Check service status
|
|
121
|
+
# Check service status (use -v for verbose debugging)
|
|
150
122
|
sudo portacode service status
|
|
123
|
+
sudo portacode service status -v
|
|
151
124
|
|
|
152
|
-
# Stop the service
|
|
125
|
+
# Stop/remove the service
|
|
153
126
|
sudo portacode service stop
|
|
154
|
-
|
|
155
|
-
# Remove the service
|
|
156
127
|
sudo portacode service uninstall
|
|
157
128
|
```
|
|
158
129
|
|
|
@@ -194,11 +165,17 @@ sudo portacode service status --verbose
|
|
|
194
165
|
|
|
195
166
|
### Service Installation Issues
|
|
196
167
|
```bash
|
|
168
|
+
# First authenticate your device
|
|
169
|
+
portacode connect
|
|
170
|
+
|
|
197
171
|
# If service commands fail, ensure system-wide installation
|
|
198
172
|
sudo pip install portacode --system
|
|
199
173
|
|
|
200
174
|
# Then try service installation again
|
|
201
175
|
sudo portacode service install
|
|
176
|
+
|
|
177
|
+
# Use verbose status to debug connection issues
|
|
178
|
+
sudo portacode service status -v
|
|
202
179
|
```
|
|
203
180
|
|
|
204
181
|
### Clipboard Issues (Linux)
|
|
@@ -79,4 +79,6 @@ testing_framework/core/hierarchical_runner.py
|
|
|
79
79
|
testing_framework/core/playwright_manager.py
|
|
80
80
|
testing_framework/core/runner.py
|
|
81
81
|
testing_framework/core/shared_cli_manager.py
|
|
82
|
-
testing_framework/core/test_discovery.py
|
|
82
|
+
testing_framework/core/test_discovery.py
|
|
83
|
+
todo/issues/indefinite_resource_loading.md
|
|
84
|
+
todo/issues/premature_terminal_exit.md
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Issue
|
|
2
|
+
Sometimes on initial page load, while the device sends the websocket message "event": "system_info" apparently the loading sequence goes incorrectly and the even is not handled correctly in the page and the device-card hides the device-resources under the loading overlay indefinitely until next system_info websocket message which wouldn't happen spontanously.
|
|
3
|
+
|
|
4
|
+
# Suggested solution
|
|
5
|
+
Edit the client side code to ensure such the handlers for such system_info messages are ready before establishing the websocket connection plus, since typically the resources are already available from cache, the loading overlay should not be active unless there is abolutely no info for resource usage, which is not the case in this scenario and we can even see the blurred numbers under the loading overlay, and in that scenario the loading overlay should not be visible to begine with
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Issue: Terminal session exits immediately after start (intermittent; device-sticky until service restart)
|
|
2
|
+
|
|
3
|
+
## What’s happening (facts)
|
|
4
|
+
|
|
5
|
+
* **Symptom:** Adevice would be working fine until suddenly it gets locked in a state where starting any new terminal session results in the terminal exiting immediately after.
|
|
6
|
+
* **Intermittency:** The issue **doesn’t always happen**; usually things work.
|
|
7
|
+
* **Device stickiness:** When a **device** experiences the issue, **every attempt on that device** behaves the same (immediate exit) **even if starting in a different project folder or even in the dashboard**.
|
|
8
|
+
* **Persistence & workaround:** The problem **persists until the Portacode service on the device is restarted**; restarting clears it (until it recurs).
|
|
9
|
+
|
|
10
|
+
## Command used
|
|
11
|
+
|
|
12
|
+
* To view logs: `portacode service status -v`
|
|
13
|
+
|
|
14
|
+
## Log evidence (exact lines, in order)
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] registry: Dispatching command 'terminal_start' with reply_channel=None
|
|
18
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] handler: Processing command terminal_start with reply_channel=None
|
|
19
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] Launching terminal 34ac592951c84a7b823ccd0432527d75 using shell=bash on channel=34ac592951c84a7b823ccd0432527d75
|
|
20
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] handler: Command terminal_start executed successfully
|
|
21
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] handler: terminal_start response project_id=1556b16d-a4a7-440e-b872-5ba82d756848, response={'event': 'terminal_started', 'terminal_id': '34ac592951c84a7b823ccd0432527d75', 'channel': '34ac592951c84a7b823ccd0432527d75', 'pid': 4001561, 'shell': 'bash', 'cwd': '/home/menas/portacode', 'project_id': '1556b16d-a4a7-440e-b872-5ba82d756848'}
|
|
22
|
+
Aug 28 08:52:17 portacode-streamer python3[109754]: [INFO] registry: Successfully dispatched command 'terminal_start'
|
|
23
|
+
Aug 28 08:52:20 portacode-streamer python3[109754]: [INFO] session_manager: Removed session 34ac592951c84a7b823ccd0432527d75 (PID: 4001561) from session manager
|
|
24
|
+
Aug 28 08:52:21 portacode-streamer python3[109754]: [ERROR] Task was destroyed but it is pending!
|
|
25
|
+
Aug 28 08:52:21 portacode-streamer python3[109754]: task: <Task pending name='Task-23986288' coro=<TerminalSession.start_io_forwarding.<locals>._pump() running at /home/menas/.local/lib/python3.11/site-packages/portacode/connection/handlers/session.py:70> wait_for=<Future pending cb=[Task.task_wakeup()]>>
|
|
26
|
+
Aug 28 08:52:22 portacode-streamer python3[109754]: [ERROR] [DEBUG] Error loading directory /home/menas/portacode: [Errno 9] Bad file descriptor: '/home/menas/portacode'
|
|
27
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] terminal_manager: Processing command 'client_sessions_update' with reply_channel=None
|
|
28
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] terminal_manager: 🔔 RECEIVED client_sessions_update with 1 sessions
|
|
29
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] Updated client sessions: 1 sessions, 0 newly added, 1 disconnected
|
|
30
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] Disconnected sessions: ['specific..inmemory!VfoFkZPqGxjL']
|
|
31
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] Project states preserved for potential reconnection of these sessions
|
|
32
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] terminal_manager: ✅ Updated client sessions (1 sessions)
|
|
33
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] terminal_manager: ℹ️ No new sessions to send data to
|
|
34
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] [DEBUG] get_or_create_project_state_manager called
|
|
35
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] [DEBUG] Context debug flag: False
|
|
36
|
+
Aug 28 08:52:55 portacode-streamer python3[109754]: [INFO] [DEBUG] Returning existing GLOBAL project state manager (PID: 109754)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Concrete facts derivable from the logs
|
|
40
|
+
|
|
41
|
+
* **Terminal launch reported as successful** at `08:52:17` with:
|
|
42
|
+
|
|
43
|
+
* `terminal_id`: `34ac592951c84a7b823ccd0432527d75`
|
|
44
|
+
* `channel`: `34ac592951c84a7b823ccd0432527d75`
|
|
45
|
+
* `pid`: `4001561`
|
|
46
|
+
* `shell`: `bash`
|
|
47
|
+
* `cwd`: `/home/menas/portacode`
|
|
48
|
+
* `project_id`: `1556b16d-a4a7-440e-b872-5ba82d756848`
|
|
49
|
+
* **Session removal** occurred **3 seconds later** at `08:52:20` for the same terminal ID and PID.
|
|
50
|
+
* After removal, logs show:
|
|
51
|
+
|
|
52
|
+
* An **async task** message: “Task was destroyed but it is pending!” referencing `TerminalSession.start_io_forwarding.<locals>._pump()` at `session.py:70`.
|
|
53
|
+
* A **directory error**: “Error loading directory /home/menas/portacode: \[Errno 9] Bad file descriptor”.
|
|
54
|
+
* A subsequent **client sessions update** indicates **1 disconnected session** and that **project states were preserved**.
|
|
55
|
+
* The system indicates it is **using an existing GLOBAL project state manager** (process PID shown as `109754`).
|
|
56
|
+
|
|
57
|
+
## What is **not** present in the provided data
|
|
58
|
+
|
|
59
|
+
* No **exit code** or **signal** for PID `4001561` is printed.
|
|
60
|
+
* No explicit **permission denied** messages.
|
|
61
|
+
* No explicit **resource limit** or **out-of-file-descriptor** message.
|
|
62
|
+
* No timezone information in the timestamps (only date and time as logged).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
If you want me to go further, I can keep it factual and transform this into a minimal repro checklist or collect-only diagnostics (no hypotheses)—but I’ll stop here unless you say otherwise.
|
|
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
|
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_aware_file_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/git_manager.py
RENAMED
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/handlers.py
RENAMED
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-1.3.25 → portacode-1.3.26}/portacode/connection/handlers/project_state_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
|
|
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
|
|
File without changes
|
|
File without changes
|