portacode 1.4.16.dev6__tar.gz → 1.4.16.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.16.dev6 → portacode-1.4.16.dev8}/PKG-INFO +1 -1
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/_version.py +2 -2
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +11 -10
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/proxmox_infra.py +106 -7
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/.claude/agents/communication-manager.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/.claude/settings.local.json +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/.gitignore +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/.gitmodules +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/LICENSE +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/MANIFEST.in +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/Makefile +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/backup.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/connect.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/connect.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docs/images/device-transfer-button.png +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docs/images/device-transfer-modal.png +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docs/images/pair-device-button.png +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docs/images/pairing-request.png +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/docs/images/student-workspace.png +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/simple_device/Dockerfile +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/simple_device/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/simple_device/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/Dockerfile +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/.local/share/portacode/run/gateway.pid +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/.gitignore +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/db.sqlite3 +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/settings.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/wsgi.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/admin.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/apps.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/menu.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/models.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/views.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-01/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-02/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-03/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-04/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-05/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-06/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-07/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-08/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-09/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/data/student-10/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/manage.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/admin.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/apps.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/menu.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/urls.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/initial_content/treats/views.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/examples/workshop_fleet/instructions/WELCOME.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/__main__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/cli.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/client.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/base.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/chunked_content.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/diff_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_aware_file_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/git_manager.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/manager.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/models.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state/utils.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/project_state_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/registry.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/session.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/tab_factory.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/test_proxmox_infra.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/update_handler.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/multiplex.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/terminal.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/data.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/keypair.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/__pycache__/link_capture_wrapper.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/elinks +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/gio-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/gnome-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/gvfs-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/kde-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/kfmclient +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/link_capture_exec.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/link_capture_wrapper.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/links +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/links2 +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/lynx +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/mate-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/netsurf +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/sensible-browser +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/w3m +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/x-www-browser +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/link_capture/bin/xdg-open +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/logging_categories.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/pairing.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/service.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/static/js/test-ntp-clock.html +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/static/js/utils/ntp-clock.js +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/utils/NTP_ARCHITECTURE.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/utils/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/utils/diff_apply.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/utils/diff_renderer.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/utils/ntp_clock.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/requires.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode.egg-info/top_level.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/pyproject.toml +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/restore.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/run_tests.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/setup.cfg +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/setup.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_device_online.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_file_operations.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_git_status_ui.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_login_flow.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_navigate_testing_folder.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_play_store_screenshots.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_terminal_buffer_performance.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_terminal_interaction.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_terminal_loading_race_condition.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_modules/test_terminal_start.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/test_request_id.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/.env.example +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/README.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/cli.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/__init__.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/base_test.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/cli_manager.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/hierarchical_runner.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/playwright_manager.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/runner.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/shared_cli_manager.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/core/test_discovery.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/testing_framework/requirements.txt +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/UI_UX/opening_a_file_on_desktop_results_in_nothing.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/agent_context_management.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/django_server_time_sync.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/device_performance_degradation.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/git_data_not_captured_in_proxmox.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/indefinite_resource_loading.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/portacode_service_silently_down.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/premature_terminal_exit.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/project_cpu_hotspots.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/terminals_exit_upon_starting.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/issues/wrong_item_classification_on_client_side.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/todo/smartphone_terminal_input_frustrations.md +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/tools/generate_play_store_assets.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/tools/pairing_tester.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/tools/run_screenshot_suite.sh +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/tools/test_python_ntp_clock.py +0 -0
- {portacode-1.4.16.dev6 → portacode-1.4.16.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.16.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 4, 16, '
|
|
31
|
+
__version__ = version = '1.4.16.dev8'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 16, 'dev8')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
{portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md
RENAMED
|
@@ -1146,16 +1146,17 @@ Provides system information in response to a `system_info` action. Handled by [`
|
|
|
1146
1146
|
* `vmid` (string|null): Numeric CT ID.
|
|
1147
1147
|
* `hostname` (string|null): Hostname configured in the CT.
|
|
1148
1148
|
* `template` (string|null): Template identifier used.
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
* `
|
|
1149
|
+
* `storage` (string|null): Storage pool backing the rootfs.
|
|
1150
|
+
* `disk_gib` (integer): Rootfs size in GiB.
|
|
1151
|
+
* `ram_mib` (integer): Memory size in MiB.
|
|
1152
|
+
* `cpu_share` (number): vCPU-equivalent share requested at creation.
|
|
1153
|
+
* `status` (string): Lowercase lifecycle status (e.g., `running`, `stopped`, `deleted`).
|
|
1154
|
+
* `created_at` (string|null): ISO timestamp recorded when the CT was provisioned.
|
|
1155
|
+
* `managed` (boolean): `true` for Portacode-managed entries.
|
|
1156
|
+
* `matches_default_storage` (boolean): `true` when this container is backed by the default storage pool used for new Portacode containers.
|
|
1157
|
+
* `type` (string): Either `lxc` or `qemu`, indicating whether we enumerated the container from the LXC or QEMU APIs.
|
|
1158
|
+
* `unmanaged_containers` (array[object]): Facts about containers Portacode did not provision; fields mirror the managed list but are marked `managed=false`.
|
|
1159
|
+
* `reserve_on_boot` (boolean): `true` when the CT is configured to start at boot; this flag is used to decide if its RAM and CPU allocations count toward the available totals.
|
|
1159
1160
|
* `unmanaged_count` (integer): Number of unmanaged containers detected on the node.
|
|
1160
1161
|
* `allocated_ram_mib` (integer): Total RAM reserved by both managed and unmanaged containers.
|
|
1161
1162
|
* `allocated_disk_gib` (integer): Total disk reserved by both managed and unmanaged containers.
|
{portacode-1.4.16.dev6 → portacode-1.4.16.dev8}/portacode/connection/handlers/proxmox_infra.py
RENAMED
|
@@ -259,6 +259,17 @@ def _bytes_to_gib(value: Any) -> int:
|
|
|
259
259
|
return int(round(_normalize_bytes(value) / (1024**3)))
|
|
260
260
|
|
|
261
261
|
|
|
262
|
+
def _extract_storage(value: Any) -> str:
|
|
263
|
+
if not value:
|
|
264
|
+
return "unknown"
|
|
265
|
+
text = str(value).strip()
|
|
266
|
+
if not text:
|
|
267
|
+
return "unknown"
|
|
268
|
+
primary = text.split(",", 1)[0]
|
|
269
|
+
storage = primary.split(":", 1)[0].strip()
|
|
270
|
+
return storage or "unknown"
|
|
271
|
+
|
|
272
|
+
|
|
262
273
|
def _normalize_storage_name(name: Any) -> str:
|
|
263
274
|
if not name:
|
|
264
275
|
return ""
|
|
@@ -464,11 +475,44 @@ def _extract_host_totals(node_status: Dict[str, Any] | None) -> Tuple[Optional[i
|
|
|
464
475
|
return host_ram, host_disk, host_cpu
|
|
465
476
|
|
|
466
477
|
|
|
478
|
+
def _parse_disk_reference(value: Any) -> Tuple[str | None, int]:
|
|
479
|
+
if not value:
|
|
480
|
+
return None, 0
|
|
481
|
+
text = str(value)
|
|
482
|
+
primary = text.split(",", 1)[0]
|
|
483
|
+
if ":" not in primary:
|
|
484
|
+
return primary.strip() or None, 0
|
|
485
|
+
storage_name, size_part = primary.split(":", 1)
|
|
486
|
+
storage_name = storage_name.strip() or None
|
|
487
|
+
size_text = size_part.strip()
|
|
488
|
+
if not size_text:
|
|
489
|
+
return storage_name, 0
|
|
490
|
+
unit = size_text[-1].upper()
|
|
491
|
+
number = size_text[:-1] if unit in {"G", "M"} else size_text
|
|
492
|
+
try:
|
|
493
|
+
value_num = float(number)
|
|
494
|
+
except ValueError:
|
|
495
|
+
return storage_name, 0
|
|
496
|
+
if unit == "M":
|
|
497
|
+
gib = value_num / 1024.0
|
|
498
|
+
else:
|
|
499
|
+
gib = value_num
|
|
500
|
+
return storage_name, int(round(gib))
|
|
501
|
+
|
|
502
|
+
|
|
467
503
|
def _build_unmanaged_container_entry(
|
|
468
|
-
ct: Dict[str, Any],
|
|
504
|
+
ct: Dict[str, Any],
|
|
505
|
+
cfg: Dict[str, Any],
|
|
506
|
+
vmid: str,
|
|
507
|
+
default_storage: str | None,
|
|
508
|
+
*,
|
|
509
|
+
disk_gib_override: int | None = None,
|
|
510
|
+
storage_override: str | None = None,
|
|
511
|
+
entry_type: str = "lxc",
|
|
469
512
|
) -> Dict[str, Any]:
|
|
470
513
|
ram_mib = _to_int(cfg.get("memory")) or _bytes_to_mib(ct.get("maxmem"))
|
|
471
|
-
|
|
514
|
+
disk_source = cfg.get("disk") or ct.get("disk") or ct.get("maxdisk")
|
|
515
|
+
disk_gib = disk_gib_override if disk_gib_override is not None else _bytes_to_gib(disk_source)
|
|
472
516
|
cpu_share = _to_float(
|
|
473
517
|
cfg.get("cpulimit")
|
|
474
518
|
or cfg.get("cpus")
|
|
@@ -477,7 +521,10 @@ def _build_unmanaged_container_entry(
|
|
|
477
521
|
or ct.get("cpu")
|
|
478
522
|
)
|
|
479
523
|
hostname = ct.get("name") or cfg.get("hostname") or f"ct{vmid}"
|
|
480
|
-
|
|
524
|
+
storage_source = (
|
|
525
|
+
storage_override or cfg.get("storage") or ct.get("storage") or ct.get("rootfs")
|
|
526
|
+
)
|
|
527
|
+
storage = _extract_storage(storage_source)
|
|
481
528
|
status = (ct.get("status") or "unknown").lower()
|
|
482
529
|
reserved = _parse_bool_flag(cfg.get("onboot"))
|
|
483
530
|
storage_matches_default = _storage_matches_default(storage, default_storage)
|
|
@@ -491,6 +538,7 @@ def _build_unmanaged_container_entry(
|
|
|
491
538
|
"cpu_share": cpu_share,
|
|
492
539
|
"reserve_on_boot": reserved,
|
|
493
540
|
"matches_default_storage": storage_matches_default,
|
|
541
|
+
"type": entry_type,
|
|
494
542
|
"status": status,
|
|
495
543
|
"managed": False,
|
|
496
544
|
}
|
|
@@ -515,11 +563,33 @@ def _get_storage_snapshot(proxmox: Any, node: str, storage_name: str | None) ->
|
|
|
515
563
|
}
|
|
516
564
|
|
|
517
565
|
|
|
566
|
+
def _extract_qemu_disk_info(cfg: Dict[str, Any]) -> Tuple[str | None, int]:
|
|
567
|
+
disk_keys = sorted(
|
|
568
|
+
key
|
|
569
|
+
for key in cfg.keys()
|
|
570
|
+
if (
|
|
571
|
+
key.startswith("ide")
|
|
572
|
+
or key.startswith("sata")
|
|
573
|
+
or key.startswith("scsi")
|
|
574
|
+
or key.startswith("virtio")
|
|
575
|
+
or key.startswith("efidisk")
|
|
576
|
+
or key.startswith("raid")
|
|
577
|
+
)
|
|
578
|
+
and cfg.get(key)
|
|
579
|
+
)
|
|
580
|
+
for key in disk_keys:
|
|
581
|
+
storage_name, size_gib = _parse_disk_reference(cfg.get(key))
|
|
582
|
+
if storage_name or size_gib:
|
|
583
|
+
return storage_name, size_gib
|
|
584
|
+
return None, 0
|
|
585
|
+
|
|
518
586
|
|
|
519
587
|
def _storage_matches_default(storage_name: Any, default_storage: str | None) -> bool:
|
|
520
588
|
if not default_storage:
|
|
521
589
|
return True
|
|
522
|
-
|
|
590
|
+
normalized_storage = _normalize_storage_name(_extract_storage(storage_name))
|
|
591
|
+
normalized_default = _normalize_storage_name(_extract_storage(default_storage))
|
|
592
|
+
return normalized_storage == normalized_default
|
|
523
593
|
|
|
524
594
|
|
|
525
595
|
def _build_managed_containers_summary(
|
|
@@ -567,8 +637,7 @@ def _build_managed_containers_summary(
|
|
|
567
637
|
unmanaged_total_disk = sum(
|
|
568
638
|
_to_int(entry.get("disk_gib"))
|
|
569
639
|
for entry in unmanaged_records
|
|
570
|
-
if entry.get("
|
|
571
|
-
and _storage_matches_default(entry.get("storage"), default_storage)
|
|
640
|
+
if entry.get("matches_default_storage")
|
|
572
641
|
)
|
|
573
642
|
unmanaged_total_cpu = sum(
|
|
574
643
|
_to_float(entry.get("cpu_share"))
|
|
@@ -644,7 +713,37 @@ def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
|
644
713
|
description = (cfg.get("description") or "")
|
|
645
714
|
if MANAGED_MARKER in description:
|
|
646
715
|
continue
|
|
647
|
-
unmanaged.append(
|
|
716
|
+
unmanaged.append(
|
|
717
|
+
_build_unmanaged_container_entry(ct, cfg, vmid_key, default_storage, entry_type="lxc")
|
|
718
|
+
)
|
|
719
|
+
for vm in proxmox.nodes(node).qemu.get():
|
|
720
|
+
vmid_val = vm.get("vmid")
|
|
721
|
+
if vmid_val is None:
|
|
722
|
+
continue
|
|
723
|
+
vmid_key = str(_to_int(vmid_val))
|
|
724
|
+
statuses[vmid_key] = (vm.get("status") or "unknown").lower()
|
|
725
|
+
if vmid_key in managed_vmids:
|
|
726
|
+
continue
|
|
727
|
+
cfg: Dict[str, Any] = {}
|
|
728
|
+
try:
|
|
729
|
+
cfg = proxmox.nodes(node).qemu(vmid_key).config.get() or {}
|
|
730
|
+
except Exception as exc:
|
|
731
|
+
logger.debug("Failed to read config for VM %s: %s", vmid_key, exc)
|
|
732
|
+
description = (cfg.get("description") or "")
|
|
733
|
+
if MANAGED_MARKER in description:
|
|
734
|
+
continue
|
|
735
|
+
storage_name, disk_gib_override = _extract_qemu_disk_info(cfg)
|
|
736
|
+
unmanaged.append(
|
|
737
|
+
_build_unmanaged_container_entry(
|
|
738
|
+
vm,
|
|
739
|
+
cfg,
|
|
740
|
+
vmid_key,
|
|
741
|
+
default_storage,
|
|
742
|
+
disk_gib_override=disk_gib_override,
|
|
743
|
+
storage_override=storage_name,
|
|
744
|
+
entry_type="qemu",
|
|
745
|
+
)
|
|
746
|
+
)
|
|
648
747
|
except Exception as exc: # pragma: no cover - best effort
|
|
649
748
|
logger.debug("Failed to refresh container statuses: %s", exc)
|
|
650
749
|
storage_snapshot = (
|
|
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
|