remo-cli 4.4.0__tar.gz → 4.4.1__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.
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/smoke-test.yml +30 -0
- remo_cli-4.4.1/.release-please-manifest.json +3 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/AGENTS.md +16 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/CHANGELOG.md +7 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/CLAUDE.md +16 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/PKG-INFO +5 -1
- {remo_cli-4.4.0 → remo_cli-4.4.1}/README.md +4 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/install.sh +51 -5
- {remo_cli-4.4.0 → remo_cli-4.4.1}/pyproject.toml +1 -1
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_install_script.py +34 -5
- remo_cli-4.4.1/tests/unit/test_smoke_test_scope.py +137 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/uv.lock +1 -1
- remo_cli-4.4.0/.release-please-manifest.json +0 -3
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/release/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-analyze/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-checklist/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-clarify/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-constitution/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-converge/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-git-commit/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-git-feature/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-git-initialize/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-git-remote/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-git-validate/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-implement/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-plan/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-specify/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-tasks/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.claude/skills/speckit-taskstoissues/SKILL.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.devcontainer/devcontainer.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.dockerignore +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/CODEOWNERS +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/actions/publish-web-image/action.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/codeql/codeql-config.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/dependabot.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/ci.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/codeql.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/dependency-review.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/dev-build.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/provision.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/rc-image.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/release-please.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/release.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/smoke-test-cleanup.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.github/workflows/teardown.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.gitignore +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.maverick/checkpoints/feature/validation_complete.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/.registry +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/README.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.commit.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.feature.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.initialize.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.remote.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.validate.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/config-template.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/extension.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/git-config.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/bash/git-common.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/feature.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/init-options.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/integration.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/integrations/claude.manifest.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/integrations/speckit.manifest.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/memory/constitution.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/common.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/setup-plan.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/setup-tasks.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/agent-file-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/checklist-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/constitution-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/plan-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/spec-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/templates/tasks-template.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/workflows/speckit/workflow.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/workflows/workflow-registry.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/CONTRIBUTING.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/Dockerfile +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/LICENSE +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/SECURITY.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/.ansible-lint +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/README.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/ansible.cfg +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/aws_configure.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/aws_resize.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/aws_site.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/aws_teardown.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/group_vars/all.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/group_vars/incus_containers.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/group_vars/proxmox_containers.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/hetzner_configure.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/hetzner_provision.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/hetzner_resize.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/hetzner_site.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/hetzner_teardown.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_bootstrap.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_configure.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_provision.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_resize.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_site.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/incus_teardown.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/inventory/hosts.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/inventory/incus_containers.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_bootstrap.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_configure.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_provision.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_resize.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_site.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/proxmox_teardown.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/requirements.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/deacon/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/deacon/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/devcontainers/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/docker/handlers/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/docker/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/fzf/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/github_cli/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container/handlers/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container/meta/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nested_docker/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nested_docker/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nested_docker/templates/devcontainer-shim.sh.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nodejs/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nodejs/files/nodesource-repo.gpg.key +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/nodejs/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container/meta/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/ssm_connector/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/ssm_connector/handlers/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/ssm_connector/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/ssm_connector/tasks/scan_and_trust_host_key.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/templates/project-launch.sh.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/user_setup/templates/remo-host.sh.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/zellij/defaults/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/zellij/tasks/main.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/ssh_configure.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/ssm_connector_enroll.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/ssm_connector_unenroll.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/tasks/configure_dev_tools.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/tasks/repair_apt_sources.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/ansible/tasks/resolve_devcontainer_runtime.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docker/Dockerfile +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docker/compose.example.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docker/entrypoint.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/aws.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/examples/orbstack-cloud-init-tailscale.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/examples/orbstack-cloud-init.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/feature-history.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/hetzner.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/incus.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/maintaining-claude-md.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/maintaining-generated-types.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/nested-overlayfs.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/provider-plugins.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/providers.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/proxmox.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/remo-web-speckit-input.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/remo-web.html +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/ssm-connector.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/docs/web-session-interface.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/index.html +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/package-lock.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/package.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/playwright.config.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/playwright.geometry.config.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/scripts/check-types-fresh.mjs +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/scripts/generate-frame-types.mjs +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/scripts/generate-schema-types.mjs +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/client.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/client.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated/README.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated/openapi.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated/schema.d.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated/terminal-frames.d.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated/terminal-frames.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/api/generated.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AddHostPage.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AddHostPage.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AddHostPage.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AppRoot.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AppShell.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AppShell.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AwaitingAdoption.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AwaitingAdoption.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/AwaitingAdoption.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/ConfigureConfirmDialog.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/DeleteProjectDialog.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/DeleteProjectDialog.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/DiagnosticsSection.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/DiagnosticsSection.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/DiagnosticsSection.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/HostDetailPage.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/HostDetailPage.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/HostDetailPage.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/HostShellPanel.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/JobProgressPanel.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/JobProgressPanel.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/OfflineOverlay.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/OfflineOverlay.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/PairToSync.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/PairToSync.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/PairToSync.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/RebuildConfirmDialog.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/RebuildConfirmDialog.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/RemoveHostDialog.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/SessionRail.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/SessionRail.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/SessionRail.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/SettingsPage.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/SettingsPage.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/ShortcutsModal.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/ShortcutsModal.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TerminalCard.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TerminalCard.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TerminalCard.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TopBar.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TopBar.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/TypeToConfirmDialog.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/WorkspacePane.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/WorkspacePane.test.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/WorkspacePane.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/masterLayout.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/masterLayout.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/providerMeta.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/providerMeta.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/railModel.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/components/railModel.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/lib/breakpoints.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/lib/clipboard.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/lib/fullscreen.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/main.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/diagnostics.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/diagnostics.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/discovery.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/discovery.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/fonts.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/health.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/health.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/hostStats.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/hostStats.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/latency.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/latency.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/settings.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/settings.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/useConsoleKeyboard.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/workspace.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/state/workspace.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/.gitkeep +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/RendererAdapter.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/TerminalConnection.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/TerminalConnection.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/XtermRenderer.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/XtermRenderer.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/defaultRenderer.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/fitLoop.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/fitLoop.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/keymap.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/terminal/keymap.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/test/setup.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/theme/fonts.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/theme/terminalThemes.test.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/theme/terminalThemes.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/src/theme/tokens.css +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/fixtures.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/host-detail.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/keyboard-routing.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/mobile.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/reconnect.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/registry-admin.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/terminal-shell-io.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/terminal-tui-compatibility.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/e2e/workspace-layout.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/geometry/global.d.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/geometry/harness/index.html +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/geometry/harness/main.tsx +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tests/geometry/terminal-fit.spec.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/tsconfig.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/frontend/vite.config.ts +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/maverick.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/project-menu.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/release-please-config.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/remo +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/remo.svg +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/run.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/scripts/export_openapi.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/scripts/palette-check.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/scripts/setup-aws-oidc.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/001-bootstrap-incus-host/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/002-incus-container-support/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/003-python-cli-rewrite/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/004-proxmox-container-support/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/contracts/cli-surface.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/005-provider-snapshots/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/contracts/remo-host-protocol.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/contracts/rest-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/contracts/terminal-websocket.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/010-web-session-interface/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/contracts/cli-web-adopt.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/contracts/setup-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/quickstart-results.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/011-web-adopt/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/contracts/cli-web-adopt.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/contracts/pairing-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/contracts/setup-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/012-web-adopt-pairing/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/contracts/cli-sync.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/contracts/marker-commands.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/013-managed-instance-tags/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/contracts/add-command.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/contracts/remove-command.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/014-register-ssh-host/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/contracts/mirror-payload-v2.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/contracts/registry-accessor-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/contracts/registry-file-v2.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/015-registry-v2/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/contracts/cli-sync.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/contracts/provider-probe.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/016-sync-reconcile/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/contracts/cli-web-push.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/contracts/cli-web-status.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/contracts/revocation.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/contracts/setup-status-marker.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/017-web-adopt-simplify/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/baseline-notes.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/contracts/cli-surface.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/contracts/errors.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/contracts/lifecycle-templates.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/contracts/provider-protocol.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/contracts/sync-merge.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/018-provider-abstraction/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/contracts/cli-surface-delta.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/contracts/docs-structure-check.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/019-hygiene-deps-docs/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/contracts/drift-checks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/contracts/terminal-frames-v1.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/020-openapi-type-generation/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/contracts/cli-surface.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/contracts/descriptor-schema.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/021-cli-plane-separation/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/cli-web-sync.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/mirror-meta.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/mirror-payload-v3.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/push-cache-v4.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/registry-admin-api.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/023-web-registry-sync/contracts/setup-registry-get.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/contracts/instance-out-stale.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/024-discovery-resilience/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/contracts/ansible-role.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/contracts/cli.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/contracts/session-document.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/issues.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/025-ssm-connector/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/contracts/remo-host-capabilities.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/contracts/runtime-resolution.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/issues.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/026-deacon-default-runtime/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/checklists/requirements.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/contracts/plugin-contract.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/data-model.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/issues.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/plan.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/quickstart.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/research.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/spec.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/specs/027-provider-plugins/tasks.md +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/__main__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/added.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/connector.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/cp.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/main.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/plugins.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/providers/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/providers/factory.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/shell.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/cli/web.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/ansible_runner.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/attach.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/completion.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/connector.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/errors.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/known_hosts.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/lifecycle.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/output.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/picker.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/platform.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/provider_plugins.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/provider_protocol.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/provider_registry.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/reconcile.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/registry.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/remo_attach_document.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/remo_host_client.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/rsync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/ssh.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/validation.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/version.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/web_adopt.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/web_drift.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/core/web_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/capability.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/discovery.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/host.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/host_job.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/host_stats.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/session_target.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/models/snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/added.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/aws.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/aws_descriptor.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/builtin.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/connector.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/hetzner.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/hetzner_descriptor.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/incus.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/incus_descriptor.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/proxmox.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/providers/proxmox_descriptor.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/gating.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/host_admin.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/hosts.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/pairing.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/registry_admin.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/setup.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/api/terminals.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/app.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/check.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/discovery.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/frames.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/health.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/jobs.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/logging_config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/mirror_meta.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/models.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/operator_auth.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/pairing.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/ssh_master.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/state.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/terminal.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/terminal_registry.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/tokens.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/src/remo_cli/web/trust_store.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_apt_sources_repair.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_authorized_keys_bootstrap.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_deacon_role.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_devcontainer_runtime_resolution.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_remo_host_idempotency.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_ssh_configure_connection.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_ssm_connector_role.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/ansible/test_user_setup_docker_group.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/conftest.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/fixtures/remo_fixture_provider/pyproject.toml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/fixtures/remo_fixture_provider/src/remo_fixture_provider/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/fixtures/remo_fixture_provider/src/remo_fixture_provider/descriptor.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/fixtures/remo_fixture_provider/src/remo_fixture_provider/provider.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/image/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/image/test_docker_image.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/_nine_terminal_fixture.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/fish_completion.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/orbstack-cloud-init.yml +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/orbstack.sh +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_fixture_plugin_e2e.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_nine_terminals.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_nine_terminals_soak.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_registry_concurrency.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_remo_host_e2e.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_security_rejections.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_setup_payload_versions.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_sync_reconcile.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_terminal_attach.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_web_adopt_e2e.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_web_cli_parity.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/integration/test_web_sync_e2e.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/perf/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/perf/test_latency.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/perf/test_registry_perf.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_aws_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_incus_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_incus_sync_all.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/providers/test_proxmox_sync_all.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/surface_baseline.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_add_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_cli_uniformity.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_configure_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_connector_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_connector_lazy_import.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_cp.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_main.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_platform_gate.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_providers_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_remove_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_shell.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_shell_added.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_startup_imports.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_surface_preservation.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/cli/test_web_adopt_cmd.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_ansible_runner.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_attach_builder.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_completion.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_connector_document.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_connector_exposure.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_connector_target.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_errors.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_known_hosts.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_lifecycle.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_migration_tagging_notice.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_output.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_picker.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_platform.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_provider_plugins.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_provider_registry.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_reconcile.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_registry_format.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_registry_locking.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_registry_migration.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_registry_plugin_types.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_remo_host_client.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_rsync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_ssh.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_ssh_added.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_ssh_controlpath.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_ssh_identity_opts.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_validation.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_version.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_adopt_authorize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_adopt_code.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_adopt_payload.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_adopt_trust.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_drift.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_push.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_push_self_heal.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/core/test_web_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/models/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/models/test_capability.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/models/test_discovery.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/models/test_session_target.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/fake_provider.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_added_add.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_added_configure.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_added_provider_guard.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_added_update_remove.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_added_verify.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_aws_provider_protocol.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_aws_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_aws_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_aws_upgrade_resize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_connector_attach.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_connector_enroll.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_entry_adapters.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_http.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_label.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_resize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_hetzner_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_host_user_consistency.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_incus_entry_adapters.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_incus_marker.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_incus_resize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_incus_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_incus_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_missing_sdk.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_provider_conformance.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_provider_registry_entries.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_devcontainer_runtime.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_marker.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_provider_protocol.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_resize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/providers/test_proxmox_sync.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_ansible_templates.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_architecture.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_architecture_provider_literals.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_dependabot_config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_dev_build_workflow.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_devcontainer_shim.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_docs_examples.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_docs_runtime_claims.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_docs_structure.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_host_model.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_host_ssh_type.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_lockfile_version.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_release_prerelease_detection.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_schema_drift.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_web_image_action.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/test_workflow_action_pins.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/__init__.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/_pairing_support.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/conftest.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/fixtures/hosts_response.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/fixtures/sessions_response.json +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_backpressure.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_check.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_check_plugins.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_cli_jobs.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_config.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_csp.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_discovery.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_discovery_refresh_force.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_frames.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_health_states.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_host_admin_api.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_hosts_mapping.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_lazy_import.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_log_redaction.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_mint_gating.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_mirror_meta.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_operator_auth.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_pairing.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_pairing_origin.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_payload_equivalence.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_registry_admin_api.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_registry_readonly.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_service_identity_selection.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_setup_api.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_setup_auth.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_setup_dormancy.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_state.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_terminal_resize.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_terminals_api.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_tokens.py +0 -0
- {remo_cli-4.4.0 → remo_cli-4.4.1}/tests/unit/web/test_trust_store.py +0 -0
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
name: Smoke Tests
|
|
2
2
|
|
|
3
|
+
# These provision real instances, so what triggers them is a cost decision as
|
|
4
|
+
# much as a coverage one:
|
|
5
|
+
#
|
|
6
|
+
# pull_request -> `incus` only (local container, free)
|
|
7
|
+
# push to main / weekly -> aws + hetzner + incus (aws and hetzner are billable)
|
|
8
|
+
# workflow_dispatch -> whichever `provider` is chosen
|
|
9
|
+
#
|
|
10
|
+
# The paid providers are gated off pull_request in each job's `if:` below.
|
|
11
|
+
#
|
|
12
|
+
# `src/remo_cli/web/**` is excluded: the web service plays no part in
|
|
13
|
+
# provisioning, so a console-only change (#184, #187, #189) should not provision
|
|
14
|
+
# anything. Negation is order-sensitive — the `!` line must follow the broad
|
|
15
|
+
# `src/remo_cli/**` it narrows.
|
|
16
|
+
#
|
|
17
|
+
# tests/unit/test_smoke_test_scope.py pins all of this.
|
|
3
18
|
on:
|
|
4
19
|
pull_request:
|
|
5
20
|
branches: [main]
|
|
6
21
|
paths:
|
|
7
22
|
- 'src/remo_cli/**'
|
|
23
|
+
- '!src/remo_cli/web/**'
|
|
8
24
|
- 'ansible/**'
|
|
9
25
|
- 'pyproject.toml'
|
|
10
26
|
- 'uv.lock'
|
|
@@ -13,6 +29,7 @@ on:
|
|
|
13
29
|
branches: [main]
|
|
14
30
|
paths:
|
|
15
31
|
- 'src/remo_cli/**'
|
|
32
|
+
- '!src/remo_cli/web/**'
|
|
16
33
|
- 'ansible/**'
|
|
17
34
|
- 'pyproject.toml'
|
|
18
35
|
- 'uv.lock'
|
|
@@ -38,8 +55,13 @@ jobs:
|
|
|
38
55
|
# AWS EC2 — SSM access
|
|
39
56
|
# ===========================================================================
|
|
40
57
|
aws:
|
|
58
|
+
# Not on pull requests: this provisions a real, billable instance.
|
|
59
|
+
# PRs are covered by the `incus` job below, which exercises the same
|
|
60
|
+
# create -> configure -> destroy path in a local container for free.
|
|
61
|
+
# aws/hetzner run on push to main, weekly, and on manual dispatch.
|
|
41
62
|
if: >-
|
|
42
63
|
github.actor != 'dependabot[bot]' &&
|
|
64
|
+
github.event_name != 'pull_request' &&
|
|
43
65
|
(github.event_name != 'workflow_dispatch' ||
|
|
44
66
|
github.event.inputs.provider == 'all' ||
|
|
45
67
|
github.event.inputs.provider == 'aws')
|
|
@@ -207,8 +229,13 @@ jobs:
|
|
|
207
229
|
# Hetzner Cloud
|
|
208
230
|
# ===========================================================================
|
|
209
231
|
hetzner:
|
|
232
|
+
# Not on pull requests: this provisions a real, billable instance.
|
|
233
|
+
# PRs are covered by the `incus` job below, which exercises the same
|
|
234
|
+
# create -> configure -> destroy path in a local container for free.
|
|
235
|
+
# aws/hetzner run on push to main, weekly, and on manual dispatch.
|
|
210
236
|
if: >-
|
|
211
237
|
github.actor != 'dependabot[bot]' &&
|
|
238
|
+
github.event_name != 'pull_request' &&
|
|
212
239
|
(github.event_name != 'workflow_dispatch' ||
|
|
213
240
|
github.event.inputs.provider == 'all' ||
|
|
214
241
|
github.event.inputs.provider == 'hetzner')
|
|
@@ -327,6 +354,9 @@ jobs:
|
|
|
327
354
|
# Incus / LXC (local on runner)
|
|
328
355
|
# ===========================================================================
|
|
329
356
|
incus:
|
|
357
|
+
# DOES run on pull requests, unlike aws/hetzner: the container is local
|
|
358
|
+
# to the runner, so it costs nothing beyond runner minutes while still
|
|
359
|
+
# proving the real provisioning path end to end.
|
|
330
360
|
if: >-
|
|
331
361
|
github.actor != 'dependabot[bot]' &&
|
|
332
362
|
(github.event_name != 'workflow_dispatch' ||
|
|
@@ -392,6 +392,22 @@ made conditional to get a build green — fix the code or amend the gate by PR.
|
|
|
392
392
|
| Packaging | wheel install smoke, Docker amd64+arm64 | Distribution integrity |
|
|
393
393
|
| Security | CodeQL, dependency review | Supply chain |
|
|
394
394
|
|
|
395
|
+
Provider smoke tests (`smoke-test.yml`) are deliberately **not** in that table —
|
|
396
|
+
they are not all merge gates, because they provision real instances and what runs
|
|
397
|
+
when is a cost decision:
|
|
398
|
+
|
|
399
|
+
| Trigger | Providers | Cost |
|
|
400
|
+
|---------|-----------|------|
|
|
401
|
+
| pull request | `incus` only | runner minutes (local container) |
|
|
402
|
+
| push to `main`, weekly cron | `aws` + `hetzner` + `incus` | aws/hetzner are billable |
|
|
403
|
+
| `workflow_dispatch` | whichever `provider` is chosen | as chosen |
|
|
404
|
+
|
|
405
|
+
So a PR still proves the real create → configure → destroy path, for free, while
|
|
406
|
+
the billable providers validate `main` right after merge. Paths exclude
|
|
407
|
+
`src/remo_cli/web/**` — the web service has no part in provisioning.
|
|
408
|
+
`tests/unit/test_smoke_test_scope.py` pins the split; the asymmetry between the
|
|
409
|
+
jobs is intentional and must not be "made consistent".
|
|
410
|
+
|
|
395
411
|
`ruff` and `mypy` share the one `Lint & Types` job. That job must keep
|
|
396
412
|
installing the `web` extra (`uv sync --all-extras`): with
|
|
397
413
|
`ignore_missing_imports = true`, an uninstalled FastAPI/pydantic would degrade
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.4.1](https://github.com/get2knowio/remo/compare/v4.4.0...v4.4.1) (2026-09-30)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **install:** upgrade an existing install instead of silently doing nothing ([#236](https://github.com/get2knowio/remo/issues/236)) ([b3dac8c](https://github.com/get2knowio/remo/commit/b3dac8ce51e99300129e4e21bbf946a63a4f1cc8))
|
|
9
|
+
|
|
3
10
|
## [4.4.0](https://github.com/get2knowio/remo/compare/v4.3.6...v4.4.0) (2026-09-30)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -393,6 +393,22 @@ made conditional to get a build green — fix the code or amend the gate by PR.
|
|
|
393
393
|
| Packaging | wheel install smoke, Docker amd64+arm64 | Distribution integrity |
|
|
394
394
|
| Security | CodeQL, dependency review | Supply chain |
|
|
395
395
|
|
|
396
|
+
Provider smoke tests (`smoke-test.yml`) are deliberately **not** in that table —
|
|
397
|
+
they are not all merge gates, because they provision real instances and what runs
|
|
398
|
+
when is a cost decision:
|
|
399
|
+
|
|
400
|
+
| Trigger | Providers | Cost |
|
|
401
|
+
|---------|-----------|------|
|
|
402
|
+
| pull request | `incus` only | runner minutes (local container) |
|
|
403
|
+
| push to `main`, weekly cron | `aws` + `hetzner` + `incus` | aws/hetzner are billable |
|
|
404
|
+
| `workflow_dispatch` | whichever `provider` is chosen | as chosen |
|
|
405
|
+
|
|
406
|
+
So a PR still proves the real create → configure → destroy path, for free, while
|
|
407
|
+
the billable providers validate `main` right after merge. Paths exclude
|
|
408
|
+
`src/remo_cli/web/**` — the web service has no part in provisioning.
|
|
409
|
+
`tests/unit/test_smoke_test_scope.py` pins the split; the asymmetry between the
|
|
410
|
+
jobs is intentional and must not be "made consistent".
|
|
411
|
+
|
|
396
412
|
`ruff` and `mypy` share the one `Lint & Types` job. That job must keep
|
|
397
413
|
installing the `web` extra (`uv sync --all-extras`): with
|
|
398
414
|
`ignore_missing_imports = true`, an uninstalled FastAPI/pydantic would degrade
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: remo-cli
|
|
3
|
-
Version: 4.4.
|
|
3
|
+
Version: 4.4.1
|
|
4
4
|
Summary: Remote development environment CLI
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -51,6 +51,10 @@ set up shell completion.
|
|
|
51
51
|
Nothing is installed silently — it prints what it is about to run, and
|
|
52
52
|
`--dry-run` prints it without running anything.
|
|
53
53
|
|
|
54
|
+
**Re-run the same command to upgrade.** It reports what changed
|
|
55
|
+
(`Updated remo-cli: 4.3.6 -> 4.4.0`), or says so plainly when you are already
|
|
56
|
+
current.
|
|
57
|
+
|
|
54
58
|
### Or install it yourself
|
|
55
59
|
|
|
56
60
|
```bash
|
|
@@ -16,6 +16,10 @@ set up shell completion.
|
|
|
16
16
|
Nothing is installed silently — it prints what it is about to run, and
|
|
17
17
|
`--dry-run` prints it without running anything.
|
|
18
18
|
|
|
19
|
+
**Re-run the same command to upgrade.** It reports what changed
|
|
20
|
+
(`Updated remo-cli: 4.3.6 -> 4.4.0`), or says so plainly when you are already
|
|
21
|
+
current.
|
|
22
|
+
|
|
19
23
|
### Or install it yourself
|
|
20
24
|
|
|
21
25
|
```bash
|
|
@@ -316,6 +316,22 @@ install_spec() {
|
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
# Install remo-cli
|
|
319
|
+
# Currently-installed version, or empty if not installed. Best-effort: never
|
|
320
|
+
# fails the install, and both spellings are normalised (uv prints `v4.4.0`,
|
|
321
|
+
# pipx prints `4.4.0`).
|
|
322
|
+
#
|
|
323
|
+
# Exists so a run is legible. The silent-no-upgrade bug this guards against was
|
|
324
|
+
# invisible precisely because nothing reported the before and after — uv printed
|
|
325
|
+
# "Installed 2 executables" either way.
|
|
326
|
+
installed_version() {
|
|
327
|
+
local v=""
|
|
328
|
+
case "${INSTALLER}" in
|
|
329
|
+
uv) v=$(uv tool list 2>/dev/null | awk -v p="${PACKAGE}" '$1==p {print $2; exit}') ;;
|
|
330
|
+
pipx) v=$(pipx list --short 2>/dev/null | awk -v p="${PACKAGE}" '$1==p {print $2; exit}') ;;
|
|
331
|
+
esac
|
|
332
|
+
printf '%s' "${v#v}"
|
|
333
|
+
}
|
|
334
|
+
|
|
319
335
|
install_remo() {
|
|
320
336
|
local spec
|
|
321
337
|
spec="$(install_spec)"
|
|
@@ -327,10 +343,19 @@ install_remo() {
|
|
|
327
343
|
*) print_error "No installer selected (internal error)."; exit 1 ;;
|
|
328
344
|
esac
|
|
329
345
|
|
|
330
|
-
# --force
|
|
331
|
-
#
|
|
332
|
-
|
|
333
|
-
|
|
346
|
+
# ALWAYS --force, including a bare run with no version.
|
|
347
|
+
#
|
|
348
|
+
# Without it, `uv tool install remo-cli` over an existing install keeps the
|
|
349
|
+
# installed version and still prints "Installed 2 executables", so the run
|
|
350
|
+
# looks successful and upgrades nothing. Someone on 4.3.6 re-running the
|
|
351
|
+
# installer to pick up 4.4.0 stays on 4.3.6 with no indication why. `pipx
|
|
352
|
+
# install` behaves the same way.
|
|
353
|
+
#
|
|
354
|
+
# This does re-do work on every run, which is the point: the *outcome* is
|
|
355
|
+
# idempotent — after any run you have the version you asked for — and that
|
|
356
|
+
# is what Principle VII asks for. Skipping the work to make the run itself a
|
|
357
|
+
# no-op is what produced the silent-no-upgrade bug.
|
|
358
|
+
cmd+=(--force "${spec}")
|
|
334
359
|
|
|
335
360
|
if [ "${DRY_RUN}" = true ]; then
|
|
336
361
|
printf '%s "%s"\n' "${cmd[*]:0:${#cmd[@]}-1}" "${spec}"
|
|
@@ -338,13 +363,34 @@ install_remo() {
|
|
|
338
363
|
fi
|
|
339
364
|
|
|
340
365
|
echo ""
|
|
341
|
-
|
|
366
|
+
local before
|
|
367
|
+
before="$(installed_version)"
|
|
368
|
+
if [ -n "${before}" ]; then
|
|
369
|
+
print_info "Installing ${PACKAGE}${VERSION:+ ${VERSION}} (replacing ${before})..."
|
|
370
|
+
else
|
|
371
|
+
print_info "Installing ${PACKAGE}${VERSION:+ ${VERSION}}..."
|
|
372
|
+
fi
|
|
342
373
|
|
|
343
374
|
if ! "${cmd[@]}"; then
|
|
344
375
|
print_error "Installation failed."
|
|
345
376
|
printf ' Try running manually: %s "%s"\n' "${cmd[*]:0:${#cmd[@]}-1}" "${spec}"
|
|
346
377
|
exit 1
|
|
347
378
|
fi
|
|
379
|
+
|
|
380
|
+
# Say what actually happened. An unchanged version after an upgrade run is
|
|
381
|
+
# the symptom of the bug the --force above exists to prevent, so name it
|
|
382
|
+
# rather than leaving the reader to compare two numbers.
|
|
383
|
+
local after
|
|
384
|
+
after="$(installed_version)"
|
|
385
|
+
if [ -n "${after}" ]; then
|
|
386
|
+
if [ -z "${before}" ]; then
|
|
387
|
+
print_success "Installed ${PACKAGE} ${after}."
|
|
388
|
+
elif [ "${before}" = "${after}" ]; then
|
|
389
|
+
print_info "${PACKAGE} ${after} was already installed — nothing changed."
|
|
390
|
+
else
|
|
391
|
+
print_success "Updated ${PACKAGE}: ${before} -> ${after}."
|
|
392
|
+
fi
|
|
393
|
+
fi
|
|
348
394
|
}
|
|
349
395
|
|
|
350
396
|
# Offer to install shell completion.
|
|
@@ -103,12 +103,41 @@ class TestChannelRouting:
|
|
|
103
103
|
def test_no_version_installs_the_package_from_pypi(self, fake_path) -> None:
|
|
104
104
|
result = _run(path=fake_path(uv=True))
|
|
105
105
|
assert result.returncode == 0, result.stderr
|
|
106
|
-
assert result.stdout.strip() == 'uv tool install "remo-cli"'
|
|
106
|
+
assert result.stdout.strip() == 'uv tool install --force "remo-cli"'
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
""
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
@pytest.mark.parametrize(
|
|
109
|
+
"args",
|
|
110
|
+
[[], ["--version", "4.3.6"], ["--prerelease", "4.4.0rc3"]],
|
|
111
|
+
ids=["bare", "version", "prerelease"],
|
|
112
|
+
)
|
|
113
|
+
def test_force_is_always_passed(self, fake_path, args: list[str]) -> None:
|
|
114
|
+
"""Including a bare run with no version — this assertion was inverted,
|
|
115
|
+
and the inversion was a real bug.
|
|
116
|
+
|
|
117
|
+
`uv tool install remo-cli` over an existing install keeps the installed
|
|
118
|
+
version and still prints "Installed 2 executables", so a user on 4.3.6
|
|
119
|
+
re-running the installer to pick up 4.4.0 stayed on 4.3.6 with the run
|
|
120
|
+
looking successful. `pipx install` behaves the same way.
|
|
121
|
+
|
|
122
|
+
Re-doing the work on every run is the point: the *outcome* is idempotent,
|
|
123
|
+
which is what Principle VII asks for. Making the run itself a no-op is
|
|
124
|
+
what produced the silent-no-upgrade.
|
|
125
|
+
"""
|
|
126
|
+
result = _run(*args, path=fake_path(uv=True))
|
|
127
|
+
assert result.returncode == 0, result.stderr
|
|
128
|
+
assert "--force" in result.stdout, (
|
|
129
|
+
"without --force an existing install is never upgraded, and the run "
|
|
130
|
+
"still reports success"
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
def test_reports_what_changed(self) -> None:
|
|
134
|
+
"""A version that did not move after an upgrade run is the symptom of the
|
|
135
|
+
bug above, so the script has to say which version it ended on rather than
|
|
136
|
+
leaving the reader to infer it."""
|
|
137
|
+
source = _script()
|
|
138
|
+
assert "installed_version()" in source
|
|
139
|
+
assert "nothing changed" in source, "a no-change run must say so"
|
|
140
|
+
assert "Updated" in source, "a version change must be reported"
|
|
112
141
|
|
|
113
142
|
def test_final_version_pins_against_pypi(self, fake_path) -> None:
|
|
114
143
|
result = _run("--version", "4.3.6", path=fake_path(uv=True))
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""What the provider smoke tests run on, and why.
|
|
2
|
+
|
|
3
|
+
These jobs provision real instances, so their triggers are a cost decision as
|
|
4
|
+
much as a coverage one:
|
|
5
|
+
|
|
6
|
+
- ``aws`` and ``hetzner`` create **billable** cloud resources. They do not run on
|
|
7
|
+
pull requests.
|
|
8
|
+
- ``incus`` creates a container local to the runner, so it is free beyond runner
|
|
9
|
+
minutes, and it exercises the same create → configure → destroy path. It *does*
|
|
10
|
+
run on pull requests, and is what keeps a PR from merging with a broken
|
|
11
|
+
provisioning path.
|
|
12
|
+
|
|
13
|
+
Before this split, a change touching only ``cli/main.py`` (PR #226, a Windows
|
|
14
|
+
error message) provisioned an EC2 instance, a Hetzner server and a container —
|
|
15
|
+
about 39 minutes of runner time plus real spend, to prove a string.
|
|
16
|
+
|
|
17
|
+
The asymmetry between the jobs is deliberate and easy to "tidy up" into
|
|
18
|
+
consistency, which would either restore the cost or drop PR coverage entirely.
|
|
19
|
+
Hence these tests.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
import re
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
import pytest
|
|
28
|
+
|
|
29
|
+
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
30
|
+
SMOKE_YML = REPO_ROOT / ".github" / "workflows" / "smoke-test.yml"
|
|
31
|
+
|
|
32
|
+
PAID_PROVIDERS = ["aws", "hetzner"]
|
|
33
|
+
FREE_PROVIDERS = ["incus"]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _job_block(name: str) -> str:
|
|
37
|
+
"""The YAML for one top-level job, up to the next job at the same indent."""
|
|
38
|
+
lines = SMOKE_YML.read_text(encoding="utf-8").splitlines()
|
|
39
|
+
start = next((i for i, ln in enumerate(lines) if ln == f" {name}:"), None)
|
|
40
|
+
assert start is not None, f"job {name!r} not found in smoke-test.yml"
|
|
41
|
+
|
|
42
|
+
block = [lines[start]]
|
|
43
|
+
for ln in lines[start + 1 :]:
|
|
44
|
+
if re.fullmatch(r" [A-Za-z0-9_-]+:", ln):
|
|
45
|
+
break
|
|
46
|
+
block.append(ln)
|
|
47
|
+
return "\n".join(block)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _if_condition(name: str) -> str:
|
|
51
|
+
"""The job's `if:` expression, comments stripped."""
|
|
52
|
+
block = _job_block(name)
|
|
53
|
+
match = re.search(r"if: >-\n((?:\s+(?!#).*\n)+)", block)
|
|
54
|
+
assert match, f"no `if:` block found for job {name!r}"
|
|
55
|
+
return " ".join(match.group(1).split())
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _trigger_paths(event: str) -> list[str]:
|
|
59
|
+
"""The `paths:` list for one `on:` event."""
|
|
60
|
+
text = SMOKE_YML.read_text(encoding="utf-8")
|
|
61
|
+
match = re.search(rf"^ {event}:\n(.*?)(?=^ [a-z_]+:$)", text, re.S | re.M)
|
|
62
|
+
assert match, f"event {event!r} not found"
|
|
63
|
+
return re.findall(r"^ - '([^']+)'", match.group(1), re.M)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class TestPaidProvidersSkipPullRequests:
|
|
67
|
+
@pytest.mark.parametrize("provider", PAID_PROVIDERS)
|
|
68
|
+
def test_not_run_on_pull_request(self, provider: str) -> None:
|
|
69
|
+
"""A PR must never provision a billable instance."""
|
|
70
|
+
assert "github.event_name != 'pull_request'" in _if_condition(provider), (
|
|
71
|
+
f"the {provider} job would run on pull requests, provisioning a "
|
|
72
|
+
"billable instance for every PR that touches provider code"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
@pytest.mark.parametrize("provider", PAID_PROVIDERS)
|
|
76
|
+
def test_still_runs_elsewhere(self, provider: str) -> None:
|
|
77
|
+
"""Excluding PRs must not exclude push-to-main, the weekly schedule, or a
|
|
78
|
+
manual dispatch — otherwise the coverage is simply gone."""
|
|
79
|
+
condition = _if_condition(provider)
|
|
80
|
+
assert "github.event_name != 'workflow_dispatch'" in condition
|
|
81
|
+
assert f"github.event.inputs.provider == '{provider}'" in condition
|
|
82
|
+
# No blanket push/schedule exclusion crept in alongside.
|
|
83
|
+
assert "github.event_name != 'push'" not in condition
|
|
84
|
+
assert "github.event_name != 'schedule'" not in condition
|
|
85
|
+
|
|
86
|
+
@pytest.mark.parametrize("provider", PAID_PROVIDERS)
|
|
87
|
+
def test_dependabot_still_excluded(self, provider: str) -> None:
|
|
88
|
+
assert "github.actor != 'dependabot[bot]'" in _if_condition(provider)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class TestFreeProviderCoversPullRequests:
|
|
92
|
+
@pytest.mark.parametrize("provider", FREE_PROVIDERS)
|
|
93
|
+
def test_runs_on_pull_request(self, provider: str) -> None:
|
|
94
|
+
"""This is the whole reason the paid ones can skip PRs. If incus also
|
|
95
|
+
stopped running on PRs, a provisioning regression would reach main
|
|
96
|
+
unchecked."""
|
|
97
|
+
assert "github.event_name != 'pull_request'" not in _if_condition(provider), (
|
|
98
|
+
f"the {provider} job has been excluded from pull requests, leaving "
|
|
99
|
+
"PRs with no end-to-end provisioning coverage at all"
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
def test_the_local_provider_is_the_one_kept(self) -> None:
|
|
103
|
+
"""incus is free because the container is local to the runner. If that
|
|
104
|
+
ever changes, this split stops being free and needs revisiting."""
|
|
105
|
+
block = _job_block("incus")
|
|
106
|
+
assert "remo incus create" in block
|
|
107
|
+
assert "runs-on: ubuntu-latest" in block
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class TestPathFilters:
|
|
111
|
+
@pytest.mark.parametrize("event", ["pull_request", "push"])
|
|
112
|
+
def test_web_subtree_is_excluded(self, event: str) -> None:
|
|
113
|
+
"""The web service plays no part in provisioning, so a console-only
|
|
114
|
+
change should provision nothing."""
|
|
115
|
+
paths = _trigger_paths(event)
|
|
116
|
+
assert "!src/remo_cli/web/**" in paths, (
|
|
117
|
+
f"the {event} trigger still provisions for web-only changes"
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
@pytest.mark.parametrize("event", ["pull_request", "push"])
|
|
121
|
+
def test_negation_follows_what_it_narrows(self, event: str) -> None:
|
|
122
|
+
"""GitHub evaluates path patterns in order, so a `!` before the broad
|
|
123
|
+
pattern it narrows has no effect — it would silently do nothing."""
|
|
124
|
+
paths = _trigger_paths(event)
|
|
125
|
+
broad = paths.index("src/remo_cli/**")
|
|
126
|
+
negation = paths.index("!src/remo_cli/web/**")
|
|
127
|
+
assert negation > broad, (
|
|
128
|
+
"'!src/remo_cli/web/**' must come AFTER 'src/remo_cli/**' or it is ignored"
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
@pytest.mark.parametrize("event", ["pull_request", "push"])
|
|
132
|
+
def test_provisioning_relevant_paths_still_trigger(self, event: str) -> None:
|
|
133
|
+
"""The exclusion must stay surgical. Provider logic, shared core, the
|
|
134
|
+
Ansible layer and dependency changes all affect provisioning."""
|
|
135
|
+
paths = _trigger_paths(event)
|
|
136
|
+
for required in ("src/remo_cli/**", "ansible/**", "pyproject.toml", "uv.lock"):
|
|
137
|
+
assert required in paths, f"{required} no longer triggers smoke tests"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.maverick/checkpoints/feature/implementation_complete.json
RENAMED
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/commands/speckit.git.initialize.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/bash/create-new-feature.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/auto-commit.ps1
RENAMED
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-4.4.0 → remo_cli-4.4.1}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|