remo-cli 3.0.0__tar.gz → 3.1.0__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-3.1.0/.release-please-manifest.json +3 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/CHANGELOG.md +7 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/PKG-INFO +1 -1
- {remo_cli-3.0.0 → remo_cli-3.1.0}/pyproject.toml +1 -1
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/main.py +18 -2
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/completion.py +61 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_main.py +11 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_completion.py +80 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/uv.lock +1 -1
- remo_cli-3.0.0/.release-please-manifest.json +0 -3
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/release/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-analyze/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-checklist/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-clarify/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-constitution/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-converge/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-git-commit/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-git-feature/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-git-initialize/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-git-remote/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-git-validate/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-implement/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-plan/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-specify/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-tasks/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.claude/skills/speckit-taskstoissues/SKILL.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.devcontainer/devcontainer.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.dockerignore +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/CODEOWNERS +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/dependabot.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/ci.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/codeql.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/dependency-review.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/dev-build.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/provision.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/release-please.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/release.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/smoke-test-cleanup.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/smoke-test.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.github/workflows/teardown.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.gitignore +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.maverick/checkpoints/feature/validation_complete.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/.registry +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/README.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/commands/speckit.git.commit.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/commands/speckit.git.feature.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/commands/speckit.git.initialize.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/commands/speckit.git.remote.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/commands/speckit.git.validate.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/config-template.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/extension.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/git-config.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/bash/git-common.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/feature.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/init-options.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/integration.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/integrations/claude.manifest.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/integrations/speckit.manifest.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/memory/constitution.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/common.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/setup-tasks.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/agent-file-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/checklist-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/constitution-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/plan-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/spec-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/templates/tasks-template.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/workflows/speckit/workflow.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/workflows/workflow-registry.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/AGENTS.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/CLAUDE.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/CONTRIBUTING.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/Dockerfile +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/LICENSE +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/README.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/SECURITY.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/.ansible-lint +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/README.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/ansible.cfg +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/aws_configure.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/aws_resize.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/aws_site.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/aws_teardown.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/group_vars/all.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/group_vars/incus_containers.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/group_vars/proxmox_containers.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/hetzner_configure.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/hetzner_provision.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/hetzner_resize.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/hetzner_site.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/hetzner_teardown.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_bootstrap.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_configure.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_provision.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_resize.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_site.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/incus_teardown.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/inventory/hosts.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/inventory/incus_containers.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_bootstrap.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_configure.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_provision.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_resize.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_site.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/proxmox_teardown.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/requirements.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/deacon/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/deacon/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/devcontainers/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/docker/handlers/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/docker/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/fzf/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/github_cli/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container/handlers/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container/meta/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/nodejs/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/nodejs/files/nodesource-repo.gpg.key +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/nodejs/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container/meta/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/templates/project-launch.sh.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/user_setup/templates/remo-host.sh.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/zellij/defaults/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/zellij/tasks/main.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/ansible/tasks/configure_dev_tools.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docker/Dockerfile +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docker/compose.example.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docker/entrypoint.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/aws.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/feature-history.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/hetzner.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/incus.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/install.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/maintaining-claude-md.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/maintaining-generated-types.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/providers.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/proxmox.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/remo-web-speckit-input.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/remo-web.html +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/docs/web-session-interface.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/index.html +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/package-lock.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/package.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/public/README.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/public/dist__ghostty-vt.wasm +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/public/ghostty-vt.wasm +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/scripts/check-types-fresh.mjs +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/scripts/copy-ghostty-wasm.mjs +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/scripts/generate-frame-types.mjs +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/scripts/generate-schema-types.mjs +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/client.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated/README.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated/openapi.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated/schema.d.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated/terminal-frames.d.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated/terminal-frames.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/api/generated.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/AppRoot.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/AppShell.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/AppShell.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/AwaitingAdoption.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/AwaitingAdoption.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/OfflineOverlay.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/OfflineOverlay.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/PairToSync.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/PairToSync.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/SessionRail.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/SessionRail.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/SettingsPage.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/SettingsPage.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/ShortcutsModal.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/ShortcutsModal.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/TerminalCard.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/TerminalCard.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/TopBar.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/TopBar.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/WorkspacePane.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/WorkspacePane.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/providerMeta.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/providerMeta.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/components/railModel.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/lib/clipboard.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/lib/fullscreen.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/main.tsx +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/discovery.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/fonts.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/health.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/latency.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/latency.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/settings.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/useConsoleKeyboard.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/workspace.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/state/workspace.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/.gitkeep +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/GhosttyRenderer.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/RendererAdapter.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/TerminalConnection.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/TerminalConnection.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/XtermRenderer.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/defaultRenderer.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/keymap.test.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/terminal/keymap.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/test/setup.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/theme/fonts.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/src/theme/tokens.css +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/tsconfig.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/frontend/vite.config.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/install.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/maverick.yaml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/playwright.config.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/project-menu.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/release-please-config.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/remo +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/remo.svg +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/run.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/scripts/export_openapi.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/scripts/setup-aws-oidc.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/001-bootstrap-incus-host/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/002-incus-container-support/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/003-python-cli-rewrite/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/004-proxmox-container-support/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/contracts/cli-surface.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/005-provider-snapshots/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/contracts/remo-host-protocol.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/contracts/rest-api.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/contracts/terminal-websocket.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/010-web-session-interface/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/contracts/cli-web-adopt.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/contracts/setup-api.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/quickstart-results.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/011-web-adopt/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/contracts/cli-web-adopt.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/contracts/pairing-api.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/contracts/setup-api.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/012-web-adopt-pairing/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/contracts/cli-sync.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/contracts/marker-commands.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/013-managed-instance-tags/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/contracts/add-command.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/contracts/remove-command.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/014-register-ssh-host/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/contracts/mirror-payload-v2.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/contracts/registry-accessor-api.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/contracts/registry-file-v2.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/015-registry-v2/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/contracts/cli-sync.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/contracts/provider-probe.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/016-sync-reconcile/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/contracts/cli-web-push.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/contracts/cli-web-status.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/contracts/revocation.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/contracts/setup-status-marker.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/017-web-adopt-simplify/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/baseline-notes.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/contracts/cli-surface.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/contracts/errors.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/contracts/lifecycle-templates.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/contracts/provider-protocol.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/contracts/sync-merge.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/018-provider-abstraction/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/contracts/cli-surface-delta.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/contracts/docs-structure-check.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/019-hygiene-deps-docs/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/checklists/requirements.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/contracts/drift-checks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/contracts/terminal-frames-v1.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/020-openapi-type-generation/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/contracts/cli-surface.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/contracts/descriptor-schema.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/data-model.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/plan.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/quickstart.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/research.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/spec.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/specs/021-cli-plane-separation/tasks.md +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/__main__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/added.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/cp.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/providers/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/providers/factory.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/shell.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/cli/web.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/ansible_runner.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/config.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/errors.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/known_hosts.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/lifecycle.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/output.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/picker.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/provider_protocol.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/provider_registry.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/reconcile.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/registry.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/remo_host_client.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/rsync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/ssh.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/validation.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/version.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/web_adopt.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/core/web_drift.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/capability.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/discovery.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/host.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/session_target.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/models/snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/added.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/aws.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/aws_descriptor.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/builtin.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/hetzner.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/hetzner_descriptor.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/incus.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/incus_descriptor.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/proxmox.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/providers/proxmox_descriptor.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/api/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/api/hosts.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/api/pairing.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/api/setup.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/api/terminals.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/app.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/check.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/config.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/discovery.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/frames.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/health.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/logging_config.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/models.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/operator_auth.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/pairing.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/ssh_master.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/state.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/terminal.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/terminal_registry.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/src/remo_cli/web/tokens.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/ansible/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/ansible/test_remo_host_idempotency.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/conftest.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/fixtures.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/ghostty-shell-io.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/ghostty-tui-compatibility.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/keyboard-routing.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/mobile.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/reconnect.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/e2e/workspace-layout.spec.ts +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/image/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/image/test_docker_image.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/_nine_terminal_fixture.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/fish_completion.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/orbstack-cloud-init.yml +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/orbstack.sh +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_nine_terminals.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_nine_terminals_soak.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_registry_concurrency.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_remo_host_e2e.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_security_rejections.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_setup_payload_versions.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_sync_reconcile.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_terminal_attach.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_web_adopt_e2e.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/integration/test_web_cli_parity.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/perf/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/perf/test_latency.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/perf/test_registry_perf.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_aws_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_incus_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_incus_sync_all.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/providers/test_proxmox_sync_all.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/surface_baseline.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_add_cmd.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_cli_uniformity.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_cp.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_remove_cmd.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_shell.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_shell_added.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_startup_imports.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_surface_preservation.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/cli/test_web_adopt_cmd.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_ansible_runner.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_config.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_errors.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_known_hosts.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_lifecycle.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_migration_tagging_notice.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_output.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_picker.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_provider_registry.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_reconcile.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_registry_format.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_registry_locking.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_registry_migration.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_remo_host_client.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_rsync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_ssh.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_ssh_added.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_ssh_controlpath.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_ssh_identity_opts.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_validation.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_version.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_adopt_authorize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_adopt_code.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_adopt_payload.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_adopt_trust.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_drift.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/core/test_web_push.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/models/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/models/test_capability.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/models/test_discovery.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/models/test_session_target.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/fake_provider.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_added_add.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_added_provider_guard.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_added_update_remove.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_added_verify.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_aws_provider_protocol.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_aws_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_aws_sync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_aws_upgrade_resize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_entry_adapters.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_http.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_label.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_resize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_hetzner_sync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_incus_entry_adapters.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_incus_marker.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_incus_resize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_incus_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_incus_sync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_missing_sdk.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_provider_conformance.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_provider_registry_entries.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_devcontainer_runtime.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_marker.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_provider_protocol.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_resize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_snapshot.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/providers/test_proxmox_sync.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_ansible_templates.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_architecture.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_docs_structure.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_host_model.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_host_ssh_type.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/test_schema_drift.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/__init__.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/_pairing_support.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/conftest.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/fixtures/hosts_response.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/fixtures/sessions_response.json +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_backpressure.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_check.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_csp.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_discovery.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_frames.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_health_states.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_hosts_mapping.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_lazy_import.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_log_redaction.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_mint_gating.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_operator_auth.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_pairing.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_pairing_origin.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_payload_equivalence.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_registry_readonly.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_setup_api.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_setup_auth.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_setup_dormancy.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_state.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_terminal_resize.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_terminals_api.py +0 -0
- {remo_cli-3.0.0 → remo_cli-3.1.0}/tests/unit/web/test_tokens.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.1.0](https://github.com/get2knowio/remo/compare/v3.0.0...v3.1.0) (2026-07-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **cli:** warn when fish won't autoload the completion we just wrote ([#118](https://github.com/get2knowio/remo/issues/118)) ([759780d](https://github.com/get2knowio/remo/commit/759780d1eab3b39409cd315e22bd16ad0ab126ab))
|
|
9
|
+
|
|
3
10
|
## [3.0.0](https://github.com/get2knowio/remo/compare/v2.2.0...v3.0.0) (2026-07-28)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -192,7 +192,13 @@ def completion_show(shell: str) -> None:
|
|
|
192
192
|
help="Add the rc `source` line without prompting (bash and zsh only).",
|
|
193
193
|
)
|
|
194
194
|
def completion_install(shell: str | None, yes: bool) -> None:
|
|
195
|
-
"""Install tab completion for SHELL (detected
|
|
195
|
+
"""Install tab completion for SHELL (auto-detected if omitted).
|
|
196
|
+
|
|
197
|
+
Detection prefers the shell you are actually running, read from the process
|
|
198
|
+
tree, and falls back to $SHELL. The two disagree more often than you would
|
|
199
|
+
expect — macOS ships zsh as the login shell, so $SHELL says zsh even when
|
|
200
|
+
you launch fish from your terminal emulator. When they differ remo says so
|
|
201
|
+
and uses the shell you are typing into; naming one explicitly always wins.
|
|
196
202
|
|
|
197
203
|
Writes the activation script to its own file and, for bash and zsh, adds a
|
|
198
204
|
single line to your rc file that loads it. Safe to re-run: an unchanged
|
|
@@ -202,7 +208,11 @@ def completion_install(shell: str | None, yes: bool) -> None:
|
|
|
202
208
|
fish needs no rc change — its completions directory is loaded
|
|
203
209
|
automatically.
|
|
204
210
|
"""
|
|
205
|
-
from remo_cli.core.completion import
|
|
211
|
+
from remo_cli.core.completion import (
|
|
212
|
+
detect_shell,
|
|
213
|
+
fish_autoload_problem,
|
|
214
|
+
install,
|
|
215
|
+
)
|
|
206
216
|
from remo_cli.core.output import print_info, print_success, print_warning
|
|
207
217
|
|
|
208
218
|
if shell is None:
|
|
@@ -231,6 +241,12 @@ def completion_install(shell: str | None, yes: bool) -> None:
|
|
|
231
241
|
print_info(f"Completion script already current: {outcome.script_path}")
|
|
232
242
|
|
|
233
243
|
if outcome.rc_path is None:
|
|
244
|
+
# fish needs no rc edit, but "wrote the file" is not the same as "fish
|
|
245
|
+
# will read it" — and when it won't, the failure is completely silent.
|
|
246
|
+
problem = fish_autoload_problem(outcome.script_path)
|
|
247
|
+
if problem:
|
|
248
|
+
print_warning(problem)
|
|
249
|
+
return
|
|
234
250
|
print_info("Start a new shell (or run `exec fish`) to pick it up.")
|
|
235
251
|
return
|
|
236
252
|
|
|
@@ -191,6 +191,67 @@ def stale_shells(current_version: str, *, home: Path | None = None) -> list[str]
|
|
|
191
191
|
return [s for s in SHELLS if is_stale(s, current_version, home=home)]
|
|
192
192
|
|
|
193
193
|
|
|
194
|
+
def fish_autoload_problem(script_path: Path) -> str | None:
|
|
195
|
+
"""Warn when fish will not autoload the script we just wrote.
|
|
196
|
+
|
|
197
|
+
A correct script in a directory fish does not read fails *identically* to a
|
|
198
|
+
broken script: fish silently completes filenames instead. There is no error,
|
|
199
|
+
and `remo completion install` otherwise reports success — so the user is
|
|
200
|
+
told everything worked while nothing does. Issue #116 was exactly this, and
|
|
201
|
+
took a day to find precisely because the failure is mute.
|
|
202
|
+
|
|
203
|
+
Asks fish what it actually reads rather than reasoning about it, so this
|
|
204
|
+
catches any cause — an exported `fish_complete_path`, a config that
|
|
205
|
+
overwrites it, a path we got wrong — not just the one that prompted it.
|
|
206
|
+
|
|
207
|
+
Returns None when everything is fine, or when fish is absent (nothing to
|
|
208
|
+
verify against, and installing for a shell you don't have is legitimate).
|
|
209
|
+
"""
|
|
210
|
+
try:
|
|
211
|
+
proc = subprocess.run(
|
|
212
|
+
["fish", "-c", r"printf '%s\n' $fish_complete_path"],
|
|
213
|
+
capture_output=True,
|
|
214
|
+
text=True,
|
|
215
|
+
timeout=5,
|
|
216
|
+
)
|
|
217
|
+
except (OSError, subprocess.SubprocessError):
|
|
218
|
+
return None
|
|
219
|
+
if proc.returncode != 0:
|
|
220
|
+
return None
|
|
221
|
+
|
|
222
|
+
entries = [line.strip() for line in proc.stdout.splitlines() if line.strip()]
|
|
223
|
+
if not entries or str(script_path.parent) in entries:
|
|
224
|
+
return None
|
|
225
|
+
|
|
226
|
+
# The specific cause behind #116, worth naming because the remedy is a
|
|
227
|
+
# one-character edit that is otherwise very hard to arrive at: fish
|
|
228
|
+
# colon-joins an exported list variable only when its name ends in
|
|
229
|
+
# uppercase PATH. `fish_complete_path` is lowercase, so an exported copy is
|
|
230
|
+
# space-joined and every child fish re-imports it as ONE nonexistent
|
|
231
|
+
# directory — silently losing every user completion at once.
|
|
232
|
+
exported = os.environ.get("fish_complete_path")
|
|
233
|
+
if exported and " " in exported:
|
|
234
|
+
return (
|
|
235
|
+
f"fish will not load completions from {script_path.parent}.\n"
|
|
236
|
+
" `fish_complete_path` is exported in your environment as a single "
|
|
237
|
+
"space-joined\n"
|
|
238
|
+
" string, so every child fish sees one nonexistent directory "
|
|
239
|
+
"instead of a list.\n"
|
|
240
|
+
" Fix: in your fish config use `set -g fish_complete_path ...`, "
|
|
241
|
+
"not `set -gx`.\n"
|
|
242
|
+
" The script itself is fine — completion will simply do nothing "
|
|
243
|
+
"until that changes."
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
return (
|
|
247
|
+
f"fish will not load completions from {script_path.parent} — "
|
|
248
|
+
"it is not in $fish_complete_path.\n"
|
|
249
|
+
" The script itself is fine, but completion will silently do nothing.\n"
|
|
250
|
+
" Check your fish config for anything that overwrites "
|
|
251
|
+
"`fish_complete_path`."
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
|
|
194
255
|
def installed_version(shell: str, *, home: Path | None = None) -> str | None:
|
|
195
256
|
"""Return the remo version stamped into the installed script, if any.
|
|
196
257
|
|
|
@@ -264,6 +264,17 @@ class TestCompletionCommand:
|
|
|
264
264
|
assert f"generated by remo {remo_cli.__version__}" in result.output
|
|
265
265
|
assert f"remo completion install {shell}" in result.output
|
|
266
266
|
|
|
267
|
+
def test_install_help_does_not_claim_shell_env_detection(self):
|
|
268
|
+
"""#115 changed detection to prefer the process tree, but the help text
|
|
269
|
+
kept saying "detected from $SHELL" — and shipped that way in 3.0.0.
|
|
270
|
+
The docstring restates behavior defined elsewhere, so nothing but a
|
|
271
|
+
test keeps the two in step (Principle VIII).
|
|
272
|
+
"""
|
|
273
|
+
result = _invoke("completion", "install", "--help")
|
|
274
|
+
assert result.exit_code == 0
|
|
275
|
+
assert "detected from $SHELL" not in result.output
|
|
276
|
+
assert "process" in result.output
|
|
277
|
+
|
|
267
278
|
@pytest.mark.parametrize("shell", ["bash", "zsh", "fish"])
|
|
268
279
|
def test_bare_shell_form_still_routes_to_show(self, shell):
|
|
269
280
|
"""`remo completion <shell>` predates the group split and is what every
|
|
@@ -8,6 +8,7 @@ on never touching an rc file without consent.
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
10
|
import os
|
|
11
|
+
import subprocess
|
|
11
12
|
|
|
12
13
|
import pytest
|
|
13
14
|
|
|
@@ -15,6 +16,7 @@ from remo_cli.core import completion
|
|
|
15
16
|
from remo_cli.core.completion import (
|
|
16
17
|
SHELLS,
|
|
17
18
|
detect_shell,
|
|
19
|
+
fish_autoload_problem,
|
|
18
20
|
install,
|
|
19
21
|
installed_version,
|
|
20
22
|
is_stale,
|
|
@@ -261,6 +263,84 @@ class TestInstall:
|
|
|
261
263
|
# ---------------------------------------------------------------------------
|
|
262
264
|
|
|
263
265
|
|
|
266
|
+
class TestFishAutoloadProblem:
|
|
267
|
+
"""Guards issue #116: a correct script fish never reads fails identically
|
|
268
|
+
to a broken one — silent fallback to filename completion, with `install`
|
|
269
|
+
reporting success. The whole point of this check is that the failure is
|
|
270
|
+
otherwise mute.
|
|
271
|
+
"""
|
|
272
|
+
|
|
273
|
+
@staticmethod
|
|
274
|
+
def _fish_returns(monkeypatch, stdout, returncode=0):
|
|
275
|
+
def fake_run(cmd, **kwargs):
|
|
276
|
+
return subprocess.CompletedProcess(cmd, returncode, stdout, "")
|
|
277
|
+
|
|
278
|
+
monkeypatch.setattr(subprocess, "run", fake_run)
|
|
279
|
+
|
|
280
|
+
def test_silent_when_directory_is_on_the_path(self, monkeypatch, tmp_path):
|
|
281
|
+
script = tmp_path / "completions" / "remo.fish"
|
|
282
|
+
self._fish_returns(monkeypatch, f"/other\n{script.parent}\n/more\n")
|
|
283
|
+
assert fish_autoload_problem(script) is None
|
|
284
|
+
|
|
285
|
+
def test_names_the_export_collapse_when_that_is_the_cause(
|
|
286
|
+
self, monkeypatch, tmp_path
|
|
287
|
+
):
|
|
288
|
+
"""fish colon-joins an exported list var only when the name ends in
|
|
289
|
+
uppercase PATH. `fish_complete_path` is lowercase, so an exported copy
|
|
290
|
+
is space-joined and every child fish re-imports it as ONE nonexistent
|
|
291
|
+
directory. The remedy is a one-character edit that is very hard to
|
|
292
|
+
arrive at unaided, so it is worth naming explicitly."""
|
|
293
|
+
script = tmp_path / "completions" / "remo.fish"
|
|
294
|
+
self._fish_returns(monkeypatch, "/collapsed /into /one\n")
|
|
295
|
+
monkeypatch.setenv("fish_complete_path", "/collapsed /into /one")
|
|
296
|
+
msg = fish_autoload_problem(script)
|
|
297
|
+
assert msg is not None
|
|
298
|
+
assert "set -g fish_complete_path" in msg
|
|
299
|
+
assert "not `set -gx`" in msg
|
|
300
|
+
# Must not leave the user thinking they need to reinstall.
|
|
301
|
+
assert "script itself is fine" in msg
|
|
302
|
+
|
|
303
|
+
def test_generic_message_when_not_an_export_problem(self, monkeypatch, tmp_path):
|
|
304
|
+
script = tmp_path / "completions" / "remo.fish"
|
|
305
|
+
self._fish_returns(monkeypatch, "/somewhere/else\n")
|
|
306
|
+
monkeypatch.delenv("fish_complete_path", raising=False)
|
|
307
|
+
msg = fish_autoload_problem(script)
|
|
308
|
+
assert msg is not None
|
|
309
|
+
assert "not in $fish_complete_path" in msg
|
|
310
|
+
assert "set -gx" not in msg
|
|
311
|
+
|
|
312
|
+
def test_single_exported_entry_is_not_flagged_as_collapsed(
|
|
313
|
+
self, monkeypatch, tmp_path
|
|
314
|
+
):
|
|
315
|
+
"""An exported path with one entry round-trips correctly — it is only
|
|
316
|
+
the space-joining of two or more that produces a bogus element."""
|
|
317
|
+
script = tmp_path / "completions" / "remo.fish"
|
|
318
|
+
self._fish_returns(monkeypatch, "/elsewhere\n")
|
|
319
|
+
monkeypatch.setenv("fish_complete_path", "/elsewhere")
|
|
320
|
+
msg = fish_autoload_problem(script)
|
|
321
|
+
assert msg is not None
|
|
322
|
+
assert "set -gx" not in msg
|
|
323
|
+
|
|
324
|
+
def test_missing_fish_is_not_a_problem(self, monkeypatch, tmp_path):
|
|
325
|
+
"""Installing completion for a shell you do not have is legitimate;
|
|
326
|
+
there is simply nothing to verify against."""
|
|
327
|
+
|
|
328
|
+
def boom(cmd, **kwargs):
|
|
329
|
+
raise FileNotFoundError("fish")
|
|
330
|
+
|
|
331
|
+
monkeypatch.setattr(subprocess, "run", boom)
|
|
332
|
+
assert fish_autoload_problem(tmp_path / "completions" / "remo.fish") is None
|
|
333
|
+
|
|
334
|
+
def test_fish_error_is_not_a_problem(self, monkeypatch, tmp_path):
|
|
335
|
+
self._fish_returns(monkeypatch, "", returncode=127)
|
|
336
|
+
assert fish_autoload_problem(tmp_path / "completions" / "remo.fish") is None
|
|
337
|
+
|
|
338
|
+
def test_empty_output_is_not_a_problem(self, monkeypatch, tmp_path):
|
|
339
|
+
"""Don't turn an unreadable answer into a confident accusation."""
|
|
340
|
+
self._fish_returns(monkeypatch, "\n")
|
|
341
|
+
assert fish_autoload_problem(tmp_path / "completions" / "remo.fish") is None
|
|
342
|
+
|
|
343
|
+
|
|
264
344
|
class TestStaleness:
|
|
265
345
|
def test_reads_the_stamped_version(self, home):
|
|
266
346
|
install("bash", SCRIPT, edit_rc=False, home=home)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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-3.0.0 → remo_cli-3.1.0}/.maverick/checkpoints/feature/implementation_complete.json
RENAMED
|
File without changes
|
{remo_cli-3.0.0 → remo_cli-3.1.0}/.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-3.0.0 → remo_cli-3.1.0}/.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-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/bash/create-new-feature.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/auto-commit.ps1
RENAMED
|
File without changes
|
{remo_cli-3.0.0 → remo_cli-3.1.0}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-3.0.0 → remo_cli-3.1.0}/.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|