portacode 1.4.12.dev0__tar.gz → 1.4.12.dev8__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-1.4.12.dev0 → portacode-1.4.12.dev8}/PKG-INFO +1 -1
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/_version.py +2 -2
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/proxmox_infra.py +76 -2
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/terminal.py +6 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/.claude/agents/communication-manager.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/.claude/settings.local.json +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/.gitignore +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/.gitmodules +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/LICENSE +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/MANIFEST.in +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/Makefile +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/backup.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/connect.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/connect.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docker-compose.yaml +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docs/images/device-transfer-button.png +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docs/images/device-transfer-modal.png +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docs/images/pair-device-button.png +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docs/images/pairing-request.png +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/docs/images/student-workspace.png +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/simple_device/Dockerfile +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/simple_device/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/simple_device/docker-compose.yaml +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/Dockerfile +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/run/gateway.pid +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/.gitignore +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/db.sqlite3 +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/settings.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/wsgi.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/admin.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/apps.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/menu.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/models.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/views.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/docker-compose.yaml +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/manage.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/templates/treats/home.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/admin.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/apps.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/menu.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/migrations/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/urls.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/initial_content/treats/views.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/examples/workshop_fleet/instructions/WELCOME.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/__main__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/cli.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/client.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/base.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/chunked_content.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/diff_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_aware_file_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/git_manager.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/manager.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/models.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state/utils.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/project_state_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/registry.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/session.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/tab_factory.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/update_handler.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/multiplex.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/data.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/keypair.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/__pycache__/link_capture_wrapper.cpython-311.pyc +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/elinks +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/gio-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/gnome-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/gvfs-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/kde-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/kfmclient +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/link_capture_exec.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/link_capture_wrapper.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/links +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/links2 +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/lynx +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/mate-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/netsurf +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/sensible-browser +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/w3m +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/x-www-browser +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/link_capture/bin/xdg-open +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/logging_categories.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/pairing.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/service.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/static/js/test-ntp-clock.html +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/static/js/utils/ntp-clock.js +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/utils/NTP_ARCHITECTURE.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/utils/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/utils/diff_apply.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/utils/diff_renderer.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/utils/ntp_clock.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/requires.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode.egg-info/top_level.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/pyproject.toml +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/restore.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/run_tests.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/setup.cfg +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/setup.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_device_online.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_file_operations.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_git_status_ui.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_login_flow.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_navigate_testing_folder.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_play_store_screenshots.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_terminal_buffer_performance.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_terminal_interaction.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_terminal_loading_race_condition.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_modules/test_terminal_start.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/test_request_id.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/.env.example +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/README.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/cli.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/__init__.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/base_test.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/cli_manager.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/hierarchical_runner.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/playwright_manager.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/runner.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/shared_cli_manager.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/core/test_discovery.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/testing_framework/requirements.txt +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/UI_UX/opening_a_file_on_desktop_results_in_nothing.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/agent_context_management.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/django_server_time_sync.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/device_performance_degradation.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/git_data_not_captured_in_proxmox.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/indefinite_resource_loading.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/portacode_service_silently_down.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/premature_terminal_exit.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/project_cpu_hotspots.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/terminals_exit_upon_starting.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/issues/wrong_item_classification_on_client_side.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/todo/smartphone_terminal_input_frustrations.md +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/tools/generate_play_store_assets.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/tools/pairing_tester.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/tools/run_screenshot_suite.sh +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/tools/test_python_ntp_clock.py +0 -0
- {portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/validate.sh +0 -0
|
@@ -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.4.12.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 4, 12, '
|
|
31
|
+
__version__ = version = '1.4.12.dev8'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 12, 'dev8')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
{portacode-1.4.12.dev0 → portacode-1.4.12.dev8}/portacode/connection/handlers/proxmox_infra.py
RENAMED
|
@@ -364,13 +364,40 @@ def _build_managed_containers_summary(records: List[Dict[str, Any]]) -> Dict[str
|
|
|
364
364
|
|
|
365
365
|
|
|
366
366
|
def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
367
|
+
def _refresh_container_statuses(records: List[Dict[str, Any]], config: Dict[str, Any] | None) -> None:
|
|
368
|
+
if not records or not config:
|
|
369
|
+
return
|
|
370
|
+
try:
|
|
371
|
+
proxmox = _connect_proxmox(config)
|
|
372
|
+
node = _get_node_from_config(config)
|
|
373
|
+
statuses = {
|
|
374
|
+
str(ct.get("vmid")): (ct.get("status") or "unknown").lower()
|
|
375
|
+
for ct in proxmox.nodes(node).lxc.get()
|
|
376
|
+
}
|
|
377
|
+
except Exception as exc: # pragma: no cover - best effort
|
|
378
|
+
logger.debug("Failed to refresh container statuses: %s", exc)
|
|
379
|
+
return
|
|
380
|
+
for record in records:
|
|
381
|
+
vmid = record.get("vmid")
|
|
382
|
+
if vmid is None:
|
|
383
|
+
continue
|
|
384
|
+
try:
|
|
385
|
+
vmid_key = str(int(vmid))
|
|
386
|
+
except (ValueError, TypeError):
|
|
387
|
+
continue
|
|
388
|
+
status = statuses.get(vmid_key)
|
|
389
|
+
if status:
|
|
390
|
+
record["status"] = status
|
|
391
|
+
|
|
367
392
|
now = time.monotonic()
|
|
368
393
|
with _MANAGED_CONTAINERS_CACHE_LOCK:
|
|
369
394
|
cache_ts = _MANAGED_CONTAINERS_CACHE["timestamp"]
|
|
370
395
|
cached = _MANAGED_CONTAINERS_CACHE["summary"]
|
|
371
396
|
if not force and cached and now - cache_ts < _MANAGED_CONTAINERS_CACHE_TTL_S:
|
|
372
397
|
return cached
|
|
398
|
+
config = _load_config()
|
|
373
399
|
records = _load_managed_container_records()
|
|
400
|
+
_refresh_container_statuses(records, config)
|
|
374
401
|
summary = _build_managed_containers_summary(records)
|
|
375
402
|
with _MANAGED_CONTAINERS_CACHE_LOCK:
|
|
376
403
|
_MANAGED_CONTAINERS_CACHE["timestamp"] = now
|
|
@@ -563,7 +590,7 @@ def _build_container_payload(message: Dict[str, Any], config: Dict[str, Any]) ->
|
|
|
563
590
|
hostname = (message.get("hostname") or "").strip()
|
|
564
591
|
disk_gib = int(max(round(_validate_positive_number(message.get("disk_gib") or message.get("disk"), 3)), 1))
|
|
565
592
|
ram_mib = int(max(round(_validate_positive_number(message.get("ram_mib") or message.get("ram"), 2048)), 1))
|
|
566
|
-
cpus = _validate_positive_number(message.get("cpus"),
|
|
593
|
+
cpus = _validate_positive_number(message.get("cpus"), 0.2)
|
|
567
594
|
storage = message.get("storage") or config.get("default_storage") or ""
|
|
568
595
|
if not storage:
|
|
569
596
|
raise ValueError("Storage pool could not be determined.")
|
|
@@ -675,14 +702,24 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
|
|
|
675
702
|
|
|
676
703
|
last_pub = last_priv = None
|
|
677
704
|
stable = 0
|
|
705
|
+
history: List[Dict[str, Any]] = []
|
|
706
|
+
|
|
678
707
|
while time.time() - start < timeout_s:
|
|
679
708
|
if proc.poll() is not None:
|
|
680
709
|
out, err = proc.communicate(timeout=1)
|
|
710
|
+
history.append(
|
|
711
|
+
{
|
|
712
|
+
"timestamp_s": round(time.time() - start, 2),
|
|
713
|
+
"status": "process_exited",
|
|
714
|
+
"returncode": proc.returncode,
|
|
715
|
+
}
|
|
716
|
+
)
|
|
681
717
|
return {
|
|
682
718
|
"ok": False,
|
|
683
719
|
"error": "portacode connect exited before keys were created",
|
|
684
720
|
"stdout": (out or "").strip(),
|
|
685
721
|
"stderr": (err or "").strip(),
|
|
722
|
+
"history": history,
|
|
686
723
|
}
|
|
687
724
|
pub_size = file_size(pub_path)
|
|
688
725
|
priv_size = file_size(priv_path)
|
|
@@ -693,7 +730,23 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
|
|
|
693
730
|
stable = 0
|
|
694
731
|
last_pub, last_priv = pub_size, priv_size
|
|
695
732
|
if stable >= 1:
|
|
733
|
+
history.append(
|
|
734
|
+
{
|
|
735
|
+
"timestamp_s": round(time.time() - start, 2),
|
|
736
|
+
"pub_size": pub_size,
|
|
737
|
+
"priv_size": priv_size,
|
|
738
|
+
"stable": stable,
|
|
739
|
+
}
|
|
740
|
+
)
|
|
696
741
|
break
|
|
742
|
+
history.append(
|
|
743
|
+
{
|
|
744
|
+
"timestamp_s": round(time.time() - start, 2),
|
|
745
|
+
"pub_size": pub_size,
|
|
746
|
+
"priv_size": priv_size,
|
|
747
|
+
"stable": stable,
|
|
748
|
+
}
|
|
749
|
+
)
|
|
697
750
|
time.sleep(1)
|
|
698
751
|
|
|
699
752
|
if stable < 1:
|
|
@@ -703,11 +756,18 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
|
|
|
703
756
|
except subprocess.TimeoutExpired:
|
|
704
757
|
proc.kill()
|
|
705
758
|
out, err = proc.communicate(timeout=1)
|
|
759
|
+
history.append(
|
|
760
|
+
{
|
|
761
|
+
"timestamp_s": round(time.time() - start, 2),
|
|
762
|
+
"status": "timeout_waiting_for_keys",
|
|
763
|
+
}
|
|
764
|
+
)
|
|
706
765
|
return {
|
|
707
766
|
"ok": False,
|
|
708
767
|
"error": "timed out waiting for portacode key files",
|
|
709
768
|
"stdout": (out or "").strip(),
|
|
710
769
|
"stderr": (err or "").strip(),
|
|
770
|
+
"history": history,
|
|
711
771
|
}
|
|
712
772
|
|
|
713
773
|
proc.terminate()
|
|
@@ -720,6 +780,7 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
|
|
|
720
780
|
return {
|
|
721
781
|
"ok": True,
|
|
722
782
|
"public_key": key_res["stdout"].strip(),
|
|
783
|
+
"history": history,
|
|
723
784
|
}
|
|
724
785
|
|
|
725
786
|
|
|
@@ -817,6 +878,19 @@ def _bootstrap_portacode(
|
|
|
817
878
|
total_steps=total_steps,
|
|
818
879
|
)
|
|
819
880
|
if not ok:
|
|
881
|
+
details = results[-1] if results else {}
|
|
882
|
+
summary = details.get("error_summary") or details.get("stderr") or details.get("stdout") or details.get("name")
|
|
883
|
+
history = details.get("history")
|
|
884
|
+
history_snippet = ""
|
|
885
|
+
if isinstance(history, list) and history:
|
|
886
|
+
history_snippet = f" history={history[-3:]}"
|
|
887
|
+
if summary:
|
|
888
|
+
logger.warning(
|
|
889
|
+
"Portacode bootstrap failure summary=%s%s",
|
|
890
|
+
summary,
|
|
891
|
+
f" history_len={len(history)}" if history else "",
|
|
892
|
+
)
|
|
893
|
+
raise RuntimeError(f"Portacode bootstrap steps failed: {summary}{history_snippet}")
|
|
820
894
|
raise RuntimeError("Portacode bootstrap steps failed.")
|
|
821
895
|
key_step = next((entry for entry in results if entry.get("name") == "portacode_connect"), None)
|
|
822
896
|
public_key = key_step.get("public_key") if key_step else None
|
|
@@ -941,7 +1015,7 @@ def _instantiate_container(proxmox: Any, node: str, payload: Dict[str, Any]) ->
|
|
|
941
1015
|
rootfs=rootfs,
|
|
942
1016
|
memory=int(payload["ram_mib"]),
|
|
943
1017
|
swap=int(payload.get("swap_mb", 0)),
|
|
944
|
-
cores=int(payload.get("
|
|
1018
|
+
cores=max(int(payload.get("cores", 1)), 1),
|
|
945
1019
|
cpuunits=int(payload.get("cpuunits", 256)),
|
|
946
1020
|
net0=payload["net0"],
|
|
947
1021
|
unprivileged=int(payload.get("unprivileged", 1)),
|
|
@@ -56,6 +56,9 @@ from .handlers import (
|
|
|
56
56
|
CreateProxmoxContainerHandler,
|
|
57
57
|
RevertProxmoxInfraHandler,
|
|
58
58
|
StartPortacodeServiceHandler,
|
|
59
|
+
StartProxmoxContainerHandler,
|
|
60
|
+
StopProxmoxContainerHandler,
|
|
61
|
+
RemoveProxmoxContainerHandler,
|
|
59
62
|
)
|
|
60
63
|
from .handlers.project_aware_file_handlers import (
|
|
61
64
|
ProjectAwareFileWriteHandler,
|
|
@@ -480,6 +483,9 @@ class TerminalManager:
|
|
|
480
483
|
self._command_registry.register(ConfigureProxmoxInfraHandler)
|
|
481
484
|
self._command_registry.register(CreateProxmoxContainerHandler)
|
|
482
485
|
self._command_registry.register(StartPortacodeServiceHandler)
|
|
486
|
+
self._command_registry.register(StartProxmoxContainerHandler)
|
|
487
|
+
self._command_registry.register(StopProxmoxContainerHandler)
|
|
488
|
+
self._command_registry.register(RemoveProxmoxContainerHandler)
|
|
483
489
|
self._command_registry.register(RevertProxmoxInfraHandler)
|
|
484
490
|
self._command_registry.register(UpdatePortacodeHandler)
|
|
485
491
|
|
|
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
|
|
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
|
|
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
|
|
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
|