remo-cli 4.3.1__tar.gz → 4.3.3__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.
Files changed (650) hide show
  1. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/ci.yml +6 -6
  2. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/codeql.yml +2 -2
  3. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/dependency-review.yml +1 -1
  4. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/dev-build.yml +2 -2
  5. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/provision.yml +1 -1
  6. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/release-please.yml +13 -3
  7. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/release.yml +2 -2
  8. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/smoke-test.yml +3 -3
  9. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/teardown.yml +1 -1
  10. {remo_cli-4.3.1 → remo_cli-4.3.3}/.gitignore +4 -0
  11. remo_cli-4.3.3/.release-please-manifest.json +3 -0
  12. {remo_cli-4.3.1 → remo_cli-4.3.3}/CHANGELOG.md +14 -0
  13. {remo_cli-4.3.1 → remo_cli-4.3.3}/PKG-INFO +17 -1
  14. {remo_cli-4.3.1 → remo_cli-4.3.3}/README.md +16 -0
  15. remo_cli-4.3.3/docs/examples/orbstack-cloud-init-tailscale.yaml +182 -0
  16. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/package-lock.json +835 -2107
  17. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/package.json +5 -5
  18. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/playwright.config.ts +13 -11
  19. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/vite.config.ts +1 -1
  20. {remo_cli-4.3.1 → remo_cli-4.3.3}/pyproject.toml +1 -1
  21. remo_cli-4.3.3/tests/unit/test_docs_examples.py +161 -0
  22. remo_cli-4.3.3/tests/unit/test_workflow_action_pins.py +85 -0
  23. {remo_cli-4.3.1 → remo_cli-4.3.3}/uv.lock +1 -1
  24. remo_cli-4.3.1/.release-please-manifest.json +0 -3
  25. remo_cli-4.3.1/tests/unit/test_docs_examples.py +0 -80
  26. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/release/SKILL.md +0 -0
  27. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-analyze/SKILL.md +0 -0
  28. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-checklist/SKILL.md +0 -0
  29. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-clarify/SKILL.md +0 -0
  30. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-constitution/SKILL.md +0 -0
  31. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-converge/SKILL.md +0 -0
  32. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-git-commit/SKILL.md +0 -0
  33. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-git-feature/SKILL.md +0 -0
  34. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-git-initialize/SKILL.md +0 -0
  35. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-git-remote/SKILL.md +0 -0
  36. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-git-validate/SKILL.md +0 -0
  37. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-implement/SKILL.md +0 -0
  38. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-plan/SKILL.md +0 -0
  39. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-specify/SKILL.md +0 -0
  40. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-tasks/SKILL.md +0 -0
  41. {remo_cli-4.3.1 → remo_cli-4.3.3}/.claude/skills/speckit-taskstoissues/SKILL.md +0 -0
  42. {remo_cli-4.3.1 → remo_cli-4.3.3}/.devcontainer/devcontainer.json +0 -0
  43. {remo_cli-4.3.1 → remo_cli-4.3.3}/.dockerignore +0 -0
  44. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/CODEOWNERS +0 -0
  45. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/dependabot.yml +0 -0
  46. {remo_cli-4.3.1 → remo_cli-4.3.3}/.github/workflows/smoke-test-cleanup.yml +0 -0
  47. {remo_cli-4.3.1 → remo_cli-4.3.3}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
  48. {remo_cli-4.3.1 → remo_cli-4.3.3}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
  49. {remo_cli-4.3.1 → remo_cli-4.3.3}/.maverick/checkpoints/feature/validation_complete.json +0 -0
  50. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/.registry +0 -0
  51. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/README.md +0 -0
  52. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/commands/speckit.git.commit.md +0 -0
  53. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/commands/speckit.git.feature.md +0 -0
  54. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/commands/speckit.git.initialize.md +0 -0
  55. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/commands/speckit.git.remote.md +0 -0
  56. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/commands/speckit.git.validate.md +0 -0
  57. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/config-template.yml +0 -0
  58. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/extension.yml +0 -0
  59. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/git-config.yml +0 -0
  60. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/bash/auto-commit.sh +0 -0
  61. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/bash/create-new-feature.sh +0 -0
  62. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/bash/git-common.sh +0 -0
  63. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  64. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  65. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1 +0 -0
  66. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  67. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  68. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/extensions.yml +0 -0
  69. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/feature.json +0 -0
  70. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/init-options.json +0 -0
  71. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/integration.json +0 -0
  72. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/integrations/claude.manifest.json +0 -0
  73. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/integrations/speckit.manifest.json +0 -0
  74. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/memory/constitution.md +0 -0
  75. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  76. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/common.sh +0 -0
  77. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/create-new-feature.sh +0 -0
  78. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/setup-plan.sh +0 -0
  79. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/setup-tasks.sh +0 -0
  80. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/scripts/bash/update-agent-context.sh +0 -0
  81. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/agent-file-template.md +0 -0
  82. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/checklist-template.md +0 -0
  83. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/constitution-template.md +0 -0
  84. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/plan-template.md +0 -0
  85. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/spec-template.md +0 -0
  86. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/templates/tasks-template.md +0 -0
  87. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/workflows/speckit/workflow.yml +0 -0
  88. {remo_cli-4.3.1 → remo_cli-4.3.3}/.specify/workflows/workflow-registry.json +0 -0
  89. {remo_cli-4.3.1 → remo_cli-4.3.3}/AGENTS.md +0 -0
  90. {remo_cli-4.3.1 → remo_cli-4.3.3}/CLAUDE.md +0 -0
  91. {remo_cli-4.3.1 → remo_cli-4.3.3}/CONTRIBUTING.md +0 -0
  92. {remo_cli-4.3.1 → remo_cli-4.3.3}/Dockerfile +0 -0
  93. {remo_cli-4.3.1 → remo_cli-4.3.3}/LICENSE +0 -0
  94. {remo_cli-4.3.1 → remo_cli-4.3.3}/SECURITY.md +0 -0
  95. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/.ansible-lint +0 -0
  96. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/README.md +0 -0
  97. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/ansible.cfg +0 -0
  98. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/aws_configure.yml +0 -0
  99. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/aws_resize.yml +0 -0
  100. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/aws_site.yml +0 -0
  101. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/aws_teardown.yml +0 -0
  102. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/group_vars/all.yml +0 -0
  103. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/group_vars/incus_containers.yml +0 -0
  104. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/group_vars/proxmox_containers.yml +0 -0
  105. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/hetzner_configure.yml +0 -0
  106. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/hetzner_provision.yml +0 -0
  107. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/hetzner_resize.yml +0 -0
  108. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/hetzner_site.yml +0 -0
  109. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/hetzner_teardown.yml +0 -0
  110. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_bootstrap.yml +0 -0
  111. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_configure.yml +0 -0
  112. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_provision.yml +0 -0
  113. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_resize.yml +0 -0
  114. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_site.yml +0 -0
  115. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/incus_teardown.yml +0 -0
  116. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/inventory/hosts.yml +0 -0
  117. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/inventory/incus_containers.yml +0 -0
  118. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_bootstrap.yml +0 -0
  119. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_configure.yml +0 -0
  120. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_provision.yml +0 -0
  121. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_resize.yml +0 -0
  122. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_site.yml +0 -0
  123. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/proxmox_teardown.yml +0 -0
  124. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/requirements.yml +0 -0
  125. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/defaults/main.yml +0 -0
  126. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
  127. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
  128. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/main.yml +0 -0
  129. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
  130. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
  131. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
  132. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/deacon/defaults/main.yml +0 -0
  133. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/deacon/tasks/main.yml +0 -0
  134. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/devcontainers/tasks/main.yml +0 -0
  135. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/docker/handlers/main.yml +0 -0
  136. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/docker/tasks/main.yml +0 -0
  137. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/fzf/tasks/main.yml +0 -0
  138. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/github_cli/tasks/main.yml +0 -0
  139. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
  140. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
  141. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
  142. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
  143. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
  144. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container/defaults/main.yml +0 -0
  145. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container/handlers/main.yml +0 -0
  146. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container/meta/main.yml +0 -0
  147. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container/tasks/main.yml +0 -0
  148. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
  149. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
  150. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
  151. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
  152. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/nodejs/defaults/main.yml +0 -0
  153. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/nodejs/files/nodesource-repo.gpg.key +0 -0
  154. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/nodejs/tasks/main.yml +0 -0
  155. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
  156. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
  157. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
  158. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
  159. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
  160. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container/meta/main.yml +0 -0
  161. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
  162. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
  163. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
  164. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
  165. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
  166. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/defaults/main.yml +0 -0
  167. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/tasks/main.yml +0 -0
  168. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
  169. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/templates/project-launch.sh.j2 +0 -0
  170. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
  171. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/user_setup/templates/remo-host.sh.j2 +0 -0
  172. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/zellij/defaults/main.yml +0 -0
  173. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/zellij/tasks/main.yml +0 -0
  174. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
  175. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
  176. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/ssh_configure.yml +0 -0
  177. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/tasks/configure_dev_tools.yml +0 -0
  178. {remo_cli-4.3.1 → remo_cli-4.3.3}/ansible/tasks/repair_apt_sources.yml +0 -0
  179. {remo_cli-4.3.1 → remo_cli-4.3.3}/docker/Dockerfile +0 -0
  180. {remo_cli-4.3.1 → remo_cli-4.3.3}/docker/compose.example.yml +0 -0
  181. {remo_cli-4.3.1 → remo_cli-4.3.3}/docker/entrypoint.sh +0 -0
  182. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/aws.md +0 -0
  183. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/examples/orbstack-cloud-init.yaml +0 -0
  184. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/feature-history.md +0 -0
  185. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/hetzner.md +0 -0
  186. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/incus.md +0 -0
  187. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/install.sh +0 -0
  188. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/maintaining-claude-md.md +0 -0
  189. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/maintaining-generated-types.md +0 -0
  190. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/providers.md +0 -0
  191. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/proxmox.md +0 -0
  192. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/remo-web-speckit-input.md +0 -0
  193. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/remo-web.html +0 -0
  194. {remo_cli-4.3.1 → remo_cli-4.3.3}/docs/web-session-interface.md +0 -0
  195. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/index.html +0 -0
  196. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/scripts/check-types-fresh.mjs +0 -0
  197. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/scripts/generate-frame-types.mjs +0 -0
  198. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/scripts/generate-schema-types.mjs +0 -0
  199. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/client.test.ts +0 -0
  200. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/client.ts +0 -0
  201. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated/README.md +0 -0
  202. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated/openapi.json +0 -0
  203. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated/schema.d.ts +0 -0
  204. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated/terminal-frames.d.ts +0 -0
  205. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated/terminal-frames.json +0 -0
  206. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/api/generated.test.ts +0 -0
  207. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/AppRoot.tsx +0 -0
  208. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/AppShell.css +0 -0
  209. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/AppShell.tsx +0 -0
  210. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/AwaitingAdoption.css +0 -0
  211. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/AwaitingAdoption.tsx +0 -0
  212. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/OfflineOverlay.css +0 -0
  213. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/OfflineOverlay.tsx +0 -0
  214. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/PairToSync.css +0 -0
  215. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/PairToSync.tsx +0 -0
  216. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/SessionRail.css +0 -0
  217. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/SessionRail.tsx +0 -0
  218. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/SettingsPage.css +0 -0
  219. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/SettingsPage.tsx +0 -0
  220. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/ShortcutsModal.css +0 -0
  221. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/ShortcutsModal.tsx +0 -0
  222. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/TerminalCard.css +0 -0
  223. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/TerminalCard.test.tsx +0 -0
  224. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/TerminalCard.tsx +0 -0
  225. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/TopBar.css +0 -0
  226. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/TopBar.tsx +0 -0
  227. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/WorkspacePane.css +0 -0
  228. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/WorkspacePane.test.tsx +0 -0
  229. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/WorkspacePane.tsx +0 -0
  230. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/masterLayout.test.ts +0 -0
  231. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/masterLayout.ts +0 -0
  232. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/providerMeta.test.ts +0 -0
  233. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/providerMeta.ts +0 -0
  234. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/railModel.test.ts +0 -0
  235. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/components/railModel.ts +0 -0
  236. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/lib/clipboard.ts +0 -0
  237. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/lib/fullscreen.ts +0 -0
  238. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/main.tsx +0 -0
  239. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/discovery.test.ts +0 -0
  240. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/discovery.ts +0 -0
  241. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/fonts.ts +0 -0
  242. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/health.test.ts +0 -0
  243. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/health.ts +0 -0
  244. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/latency.test.ts +0 -0
  245. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/latency.ts +0 -0
  246. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/settings.test.ts +0 -0
  247. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/settings.ts +0 -0
  248. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/useConsoleKeyboard.ts +0 -0
  249. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/workspace.test.ts +0 -0
  250. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/state/workspace.ts +0 -0
  251. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/.gitkeep +0 -0
  252. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/RendererAdapter.ts +0 -0
  253. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/TerminalConnection.test.ts +0 -0
  254. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/TerminalConnection.ts +0 -0
  255. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/XtermRenderer.ts +0 -0
  256. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/defaultRenderer.ts +0 -0
  257. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/keymap.test.ts +0 -0
  258. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/terminal/keymap.ts +0 -0
  259. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/test/setup.ts +0 -0
  260. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/theme/fonts.ts +0 -0
  261. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/theme/terminalThemes.test.ts +0 -0
  262. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/theme/terminalThemes.ts +0 -0
  263. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/src/theme/tokens.css +0 -0
  264. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/fixtures.ts +0 -0
  265. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/keyboard-routing.spec.ts +0 -0
  266. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/mobile.spec.ts +0 -0
  267. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/reconnect.spec.ts +0 -0
  268. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/terminal-shell-io.spec.ts +0 -0
  269. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/terminal-tui-compatibility.spec.ts +0 -0
  270. {remo_cli-4.3.1 → remo_cli-4.3.3/frontend}/tests/e2e/workspace-layout.spec.ts +0 -0
  271. {remo_cli-4.3.1 → remo_cli-4.3.3}/frontend/tsconfig.json +0 -0
  272. {remo_cli-4.3.1 → remo_cli-4.3.3}/install.sh +0 -0
  273. {remo_cli-4.3.1 → remo_cli-4.3.3}/maverick.yaml +0 -0
  274. {remo_cli-4.3.1 → remo_cli-4.3.3}/project-menu.sh +0 -0
  275. {remo_cli-4.3.1 → remo_cli-4.3.3}/release-please-config.json +0 -0
  276. {remo_cli-4.3.1 → remo_cli-4.3.3}/remo +0 -0
  277. {remo_cli-4.3.1 → remo_cli-4.3.3}/remo.svg +0 -0
  278. {remo_cli-4.3.1 → remo_cli-4.3.3}/run.sh +0 -0
  279. {remo_cli-4.3.1 → remo_cli-4.3.3}/scripts/export_openapi.py +0 -0
  280. {remo_cli-4.3.1 → remo_cli-4.3.3}/scripts/palette-check.sh +0 -0
  281. {remo_cli-4.3.1 → remo_cli-4.3.3}/scripts/setup-aws-oidc.sh +0 -0
  282. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
  283. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
  284. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
  285. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
  286. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/data-model.md +0 -0
  287. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/plan.md +0 -0
  288. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
  289. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/research.md +0 -0
  290. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/spec.md +0 -0
  291. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/001-bootstrap-incus-host/tasks.md +0 -0
  292. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/checklists/requirements.md +0 -0
  293. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
  294. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
  295. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/data-model.md +0 -0
  296. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/plan.md +0 -0
  297. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/quickstart.md +0 -0
  298. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/research.md +0 -0
  299. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/spec.md +0 -0
  300. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/002-incus-container-support/tasks.md +0 -0
  301. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
  302. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/data-model.md +0 -0
  303. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/plan.md +0 -0
  304. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/quickstart.md +0 -0
  305. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/research.md +0 -0
  306. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/spec.md +0 -0
  307. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/003-python-cli-rewrite/tasks.md +0 -0
  308. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/004-proxmox-container-support/spec.md +0 -0
  309. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/checklists/requirements.md +0 -0
  310. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/contracts/cli-surface.md +0 -0
  311. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/data-model.md +0 -0
  312. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/plan.md +0 -0
  313. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/quickstart.md +0 -0
  314. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/research.md +0 -0
  315. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/spec.md +0 -0
  316. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/005-provider-snapshots/tasks.md +0 -0
  317. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/checklists/requirements.md +0 -0
  318. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/contracts/remo-host-protocol.md +0 -0
  319. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/contracts/rest-api.md +0 -0
  320. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/contracts/terminal-websocket.md +0 -0
  321. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/data-model.md +0 -0
  322. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/plan.md +0 -0
  323. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/quickstart.md +0 -0
  324. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/research.md +0 -0
  325. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/spec.md +0 -0
  326. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/010-web-session-interface/tasks.md +0 -0
  327. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/checklists/requirements.md +0 -0
  328. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/contracts/cli-web-adopt.md +0 -0
  329. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/contracts/setup-api.md +0 -0
  330. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/data-model.md +0 -0
  331. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/plan.md +0 -0
  332. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/quickstart-results.md +0 -0
  333. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/quickstart.md +0 -0
  334. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/research.md +0 -0
  335. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/spec.md +0 -0
  336. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/011-web-adopt/tasks.md +0 -0
  337. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/contracts/cli-web-adopt.md +0 -0
  338. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/contracts/pairing-api.md +0 -0
  339. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/contracts/setup-api.md +0 -0
  340. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/data-model.md +0 -0
  341. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/plan.md +0 -0
  342. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/quickstart.md +0 -0
  343. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/research.md +0 -0
  344. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/spec.md +0 -0
  345. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/012-web-adopt-pairing/tasks.md +0 -0
  346. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/contracts/cli-sync.md +0 -0
  347. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/contracts/marker-commands.md +0 -0
  348. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/data-model.md +0 -0
  349. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/plan.md +0 -0
  350. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/quickstart.md +0 -0
  351. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/research.md +0 -0
  352. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/spec.md +0 -0
  353. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/013-managed-instance-tags/tasks.md +0 -0
  354. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/contracts/add-command.md +0 -0
  355. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/contracts/remove-command.md +0 -0
  356. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/data-model.md +0 -0
  357. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/plan.md +0 -0
  358. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/quickstart.md +0 -0
  359. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/research.md +0 -0
  360. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/spec.md +0 -0
  361. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/014-register-ssh-host/tasks.md +0 -0
  362. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/checklists/requirements.md +0 -0
  363. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/contracts/mirror-payload-v2.md +0 -0
  364. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/contracts/registry-accessor-api.md +0 -0
  365. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/contracts/registry-file-v2.md +0 -0
  366. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/data-model.md +0 -0
  367. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/plan.md +0 -0
  368. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/quickstart.md +0 -0
  369. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/research.md +0 -0
  370. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/spec.md +0 -0
  371. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/015-registry-v2/tasks.md +0 -0
  372. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/checklists/requirements.md +0 -0
  373. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/contracts/cli-sync.md +0 -0
  374. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/contracts/provider-probe.md +0 -0
  375. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/data-model.md +0 -0
  376. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/plan.md +0 -0
  377. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/quickstart.md +0 -0
  378. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/research.md +0 -0
  379. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/spec.md +0 -0
  380. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/016-sync-reconcile/tasks.md +0 -0
  381. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/checklists/requirements.md +0 -0
  382. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/contracts/cli-web-push.md +0 -0
  383. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/contracts/cli-web-status.md +0 -0
  384. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/contracts/revocation.md +0 -0
  385. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/contracts/setup-status-marker.md +0 -0
  386. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/data-model.md +0 -0
  387. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/plan.md +0 -0
  388. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/quickstart.md +0 -0
  389. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/research.md +0 -0
  390. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/spec.md +0 -0
  391. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/017-web-adopt-simplify/tasks.md +0 -0
  392. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/baseline-notes.md +0 -0
  393. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/checklists/requirements.md +0 -0
  394. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/contracts/cli-surface.md +0 -0
  395. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/contracts/errors.md +0 -0
  396. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/contracts/lifecycle-templates.md +0 -0
  397. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/contracts/provider-protocol.md +0 -0
  398. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/contracts/sync-merge.md +0 -0
  399. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/data-model.md +0 -0
  400. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/plan.md +0 -0
  401. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/quickstart.md +0 -0
  402. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/research.md +0 -0
  403. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/spec.md +0 -0
  404. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/018-provider-abstraction/tasks.md +0 -0
  405. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/checklists/requirements.md +0 -0
  406. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/contracts/cli-surface-delta.md +0 -0
  407. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/contracts/docs-structure-check.md +0 -0
  408. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/data-model.md +0 -0
  409. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/plan.md +0 -0
  410. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/quickstart.md +0 -0
  411. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/research.md +0 -0
  412. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/spec.md +0 -0
  413. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/019-hygiene-deps-docs/tasks.md +0 -0
  414. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/checklists/requirements.md +0 -0
  415. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/contracts/drift-checks.md +0 -0
  416. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/contracts/terminal-frames-v1.md +0 -0
  417. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/data-model.md +0 -0
  418. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/plan.md +0 -0
  419. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/quickstart.md +0 -0
  420. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/research.md +0 -0
  421. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/spec.md +0 -0
  422. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/020-openapi-type-generation/tasks.md +0 -0
  423. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/contracts/cli-surface.md +0 -0
  424. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/contracts/descriptor-schema.md +0 -0
  425. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/data-model.md +0 -0
  426. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/plan.md +0 -0
  427. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/quickstart.md +0 -0
  428. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/research.md +0 -0
  429. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/spec.md +0 -0
  430. {remo_cli-4.3.1 → remo_cli-4.3.3}/specs/021-cli-plane-separation/tasks.md +0 -0
  431. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/__init__.py +0 -0
  432. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/__main__.py +0 -0
  433. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/__init__.py +0 -0
  434. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/added.py +0 -0
  435. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/cp.py +0 -0
  436. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/main.py +0 -0
  437. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/providers/__init__.py +0 -0
  438. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/providers/factory.py +0 -0
  439. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/shell.py +0 -0
  440. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/cli/web.py +0 -0
  441. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/__init__.py +0 -0
  442. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/ansible_runner.py +0 -0
  443. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/completion.py +0 -0
  444. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/config.py +0 -0
  445. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/errors.py +0 -0
  446. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/known_hosts.py +0 -0
  447. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/lifecycle.py +0 -0
  448. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/output.py +0 -0
  449. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/picker.py +0 -0
  450. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/provider_protocol.py +0 -0
  451. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/provider_registry.py +0 -0
  452. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/reconcile.py +0 -0
  453. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/registry.py +0 -0
  454. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/remo_host_client.py +0 -0
  455. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/rsync.py +0 -0
  456. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/snapshot.py +0 -0
  457. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/ssh.py +0 -0
  458. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/validation.py +0 -0
  459. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/version.py +0 -0
  460. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/web_adopt.py +0 -0
  461. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/core/web_drift.py +0 -0
  462. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/__init__.py +0 -0
  463. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/capability.py +0 -0
  464. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/discovery.py +0 -0
  465. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/host.py +0 -0
  466. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/session_target.py +0 -0
  467. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/models/snapshot.py +0 -0
  468. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/__init__.py +0 -0
  469. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/added.py +0 -0
  470. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/aws.py +0 -0
  471. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/aws_descriptor.py +0 -0
  472. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/builtin.py +0 -0
  473. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/hetzner.py +0 -0
  474. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/hetzner_descriptor.py +0 -0
  475. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/incus.py +0 -0
  476. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/incus_descriptor.py +0 -0
  477. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/proxmox.py +0 -0
  478. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/providers/proxmox_descriptor.py +0 -0
  479. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/__init__.py +0 -0
  480. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/api/__init__.py +0 -0
  481. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/api/hosts.py +0 -0
  482. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/api/pairing.py +0 -0
  483. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/api/setup.py +0 -0
  484. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/api/terminals.py +0 -0
  485. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/app.py +0 -0
  486. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/check.py +0 -0
  487. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/config.py +0 -0
  488. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/discovery.py +0 -0
  489. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/frames.py +0 -0
  490. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/health.py +0 -0
  491. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/logging_config.py +0 -0
  492. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/models.py +0 -0
  493. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/operator_auth.py +0 -0
  494. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/pairing.py +0 -0
  495. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/ssh_master.py +0 -0
  496. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/state.py +0 -0
  497. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/terminal.py +0 -0
  498. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/terminal_registry.py +0 -0
  499. {remo_cli-4.3.1 → remo_cli-4.3.3}/src/remo_cli/web/tokens.py +0 -0
  500. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/__init__.py +0 -0
  501. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/__init__.py +0 -0
  502. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/test_apt_sources_repair.py +0 -0
  503. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/test_authorized_keys_bootstrap.py +0 -0
  504. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/test_remo_host_idempotency.py +0 -0
  505. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/test_ssh_configure_connection.py +0 -0
  506. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/ansible/test_user_setup_docker_group.py +0 -0
  507. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/conftest.py +0 -0
  508. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/image/__init__.py +0 -0
  509. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/image/test_docker_image.py +0 -0
  510. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/__init__.py +0 -0
  511. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/_nine_terminal_fixture.py +0 -0
  512. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/fish_completion.sh +0 -0
  513. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/orbstack-cloud-init.yml +0 -0
  514. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/orbstack.sh +0 -0
  515. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_nine_terminals.py +0 -0
  516. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_nine_terminals_soak.py +0 -0
  517. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_registry_concurrency.py +0 -0
  518. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_remo_host_e2e.py +0 -0
  519. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_security_rejections.py +0 -0
  520. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_setup_payload_versions.py +0 -0
  521. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_sync_reconcile.py +0 -0
  522. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_terminal_attach.py +0 -0
  523. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_web_adopt_e2e.py +0 -0
  524. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/integration/test_web_cli_parity.py +0 -0
  525. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/perf/__init__.py +0 -0
  526. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/perf/test_latency.py +0 -0
  527. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/perf/test_registry_perf.py +0 -0
  528. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/__init__.py +0 -0
  529. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/__init__.py +0 -0
  530. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_aws_snapshot.py +0 -0
  531. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_hetzner_snapshot.py +0 -0
  532. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_incus_snapshot.py +0 -0
  533. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_incus_sync_all.py +0 -0
  534. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_proxmox_snapshot.py +0 -0
  535. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/providers/test_proxmox_sync_all.py +0 -0
  536. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/surface_baseline.py +0 -0
  537. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_add_cmd.py +0 -0
  538. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_cli_uniformity.py +0 -0
  539. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_configure_cmd.py +0 -0
  540. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_cp.py +0 -0
  541. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_main.py +0 -0
  542. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_remove_cmd.py +0 -0
  543. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_shell.py +0 -0
  544. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_shell_added.py +0 -0
  545. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_startup_imports.py +0 -0
  546. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_surface_preservation.py +0 -0
  547. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/cli/test_web_adopt_cmd.py +0 -0
  548. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/__init__.py +0 -0
  549. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_ansible_runner.py +0 -0
  550. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_completion.py +0 -0
  551. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_config.py +0 -0
  552. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_errors.py +0 -0
  553. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_known_hosts.py +0 -0
  554. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_lifecycle.py +0 -0
  555. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_migration_tagging_notice.py +0 -0
  556. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_output.py +0 -0
  557. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_picker.py +0 -0
  558. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_provider_registry.py +0 -0
  559. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_reconcile.py +0 -0
  560. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_registry_format.py +0 -0
  561. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_registry_locking.py +0 -0
  562. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_registry_migration.py +0 -0
  563. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_remo_host_client.py +0 -0
  564. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_rsync.py +0 -0
  565. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_snapshot.py +0 -0
  566. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_ssh.py +0 -0
  567. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_ssh_added.py +0 -0
  568. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_ssh_controlpath.py +0 -0
  569. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_ssh_identity_opts.py +0 -0
  570. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_validation.py +0 -0
  571. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_version.py +0 -0
  572. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_adopt_authorize.py +0 -0
  573. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_adopt_code.py +0 -0
  574. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_adopt_payload.py +0 -0
  575. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_adopt_trust.py +0 -0
  576. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_drift.py +0 -0
  577. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_push.py +0 -0
  578. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/core/test_web_push_self_heal.py +0 -0
  579. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/models/__init__.py +0 -0
  580. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/models/test_capability.py +0 -0
  581. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/models/test_discovery.py +0 -0
  582. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/models/test_session_target.py +0 -0
  583. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/__init__.py +0 -0
  584. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/fake_provider.py +0 -0
  585. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_added_add.py +0 -0
  586. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_added_configure.py +0 -0
  587. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_added_provider_guard.py +0 -0
  588. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_added_update_remove.py +0 -0
  589. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_added_verify.py +0 -0
  590. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_aws_provider_protocol.py +0 -0
  591. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_aws_snapshot.py +0 -0
  592. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_aws_sync.py +0 -0
  593. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_aws_upgrade_resize.py +0 -0
  594. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_entry_adapters.py +0 -0
  595. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_http.py +0 -0
  596. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_label.py +0 -0
  597. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_resize.py +0 -0
  598. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_snapshot.py +0 -0
  599. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_hetzner_sync.py +0 -0
  600. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_host_user_consistency.py +0 -0
  601. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_incus_entry_adapters.py +0 -0
  602. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_incus_marker.py +0 -0
  603. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_incus_resize.py +0 -0
  604. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_incus_snapshot.py +0 -0
  605. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_incus_sync.py +0 -0
  606. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_missing_sdk.py +0 -0
  607. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_provider_conformance.py +0 -0
  608. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_provider_registry_entries.py +0 -0
  609. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_devcontainer_runtime.py +0 -0
  610. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_marker.py +0 -0
  611. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_provider_protocol.py +0 -0
  612. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_resize.py +0 -0
  613. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_snapshot.py +0 -0
  614. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/providers/test_proxmox_sync.py +0 -0
  615. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_ansible_templates.py +0 -0
  616. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_architecture.py +0 -0
  617. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_docs_structure.py +0 -0
  618. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_host_model.py +0 -0
  619. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_host_ssh_type.py +0 -0
  620. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_lockfile_version.py +0 -0
  621. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/test_schema_drift.py +0 -0
  622. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/__init__.py +0 -0
  623. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/_pairing_support.py +0 -0
  624. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/conftest.py +0 -0
  625. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/fixtures/hosts_response.json +0 -0
  626. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/fixtures/sessions_response.json +0 -0
  627. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_backpressure.py +0 -0
  628. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_check.py +0 -0
  629. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_csp.py +0 -0
  630. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_discovery.py +0 -0
  631. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_discovery_refresh_force.py +0 -0
  632. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_frames.py +0 -0
  633. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_health_states.py +0 -0
  634. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_hosts_mapping.py +0 -0
  635. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_lazy_import.py +0 -0
  636. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_log_redaction.py +0 -0
  637. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_mint_gating.py +0 -0
  638. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_operator_auth.py +0 -0
  639. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_pairing.py +0 -0
  640. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_pairing_origin.py +0 -0
  641. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_payload_equivalence.py +0 -0
  642. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_registry_readonly.py +0 -0
  643. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_service_identity_selection.py +0 -0
  644. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_setup_api.py +0 -0
  645. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_setup_auth.py +0 -0
  646. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_setup_dormancy.py +0 -0
  647. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_state.py +0 -0
  648. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_terminal_resize.py +0 -0
  649. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_terminals_api.py +0 -0
  650. {remo_cli-4.3.1 → remo_cli-4.3.3}/tests/unit/web/test_tokens.py +0 -0
@@ -17,7 +17,7 @@ jobs:
17
17
  steps:
18
18
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
19
19
 
20
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
20
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
21
21
 
22
22
  - name: Set up Python ${{ matrix.python-version }}
23
23
  run: uv python install ${{ matrix.python-version }}
@@ -48,7 +48,7 @@ jobs:
48
48
 
49
49
  - uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
50
50
 
51
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
51
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
52
52
 
53
53
  - name: Install dependencies
54
54
  run: uv sync --all-extras
@@ -70,7 +70,7 @@ jobs:
70
70
  steps:
71
71
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
72
72
 
73
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
73
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
74
74
 
75
75
  - name: Build wheel
76
76
  run: uv build --wheel
@@ -98,7 +98,7 @@ jobs:
98
98
  steps:
99
99
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
100
100
 
101
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
101
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
102
102
 
103
103
  - name: Install fish
104
104
  run: |
@@ -124,7 +124,7 @@ jobs:
124
124
  steps:
125
125
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
126
126
 
127
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
127
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
128
128
 
129
129
  - name: Install dependencies
130
130
  run: uv sync --all-extras
@@ -144,7 +144,7 @@ jobs:
144
144
  runs-on: ubuntu-latest
145
145
  # Fast, backend-free coverage of the SPA: tsc typecheck, the Vitest
146
146
  # unit/component suite (frontend/src/**/*.test.ts), and a production build.
147
- # The Playwright e2e suite (tests/e2e) is NOT run here — it needs a live
147
+ # The Playwright e2e suite (frontend/tests/e2e) is NOT run here — it needs a live
148
148
  # `remo web serve` backend (REMO_E2E_BASE_URL); see playwright.config.ts.
149
149
  defaults:
150
150
  run:
@@ -33,12 +33,12 @@ jobs:
33
33
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
34
34
 
35
35
  - name: Initialize CodeQL
36
- uses: github/codeql-action/init@4187e74d05793876e9989daffde9c3e66b4acd07 # v3
36
+ uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
37
37
  with:
38
38
  languages: ${{ matrix.language }}
39
39
  build-mode: ${{ matrix.build-mode }}
40
40
 
41
41
  - name: Perform CodeQL Analysis
42
- uses: github/codeql-action/analyze@4187e74d05793876e9989daffde9c3e66b4acd07 # v3
42
+ uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
43
43
  with:
44
44
  category: "/language:${{ matrix.language }}"
@@ -13,6 +13,6 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
15
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
16
- - uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4
16
+ - uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v4
17
17
  with:
18
18
  fail-on-severity: high
@@ -34,7 +34,7 @@ jobs:
34
34
  with:
35
35
  fetch-depth: 0
36
36
 
37
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
37
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
38
38
 
39
39
  - name: Compute dev version
40
40
  id: ver
@@ -70,7 +70,7 @@ jobs:
70
70
  - name: Upload artifact
71
71
  # NOTE: SHA-pin to match the repo's action-pinning convention once the
72
72
  # v4 commit SHA is available (e.g. `@<sha> # v4`).
73
- uses: actions/upload-artifact@v4
73
+ uses: actions/upload-artifact@v7
74
74
  with:
75
75
  name: remo-wheel
76
76
  path: dist/*
@@ -19,7 +19,7 @@ jobs:
19
19
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
20
20
 
21
21
  - name: Install uv
22
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
22
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
23
23
 
24
24
  - name: Install Ansible and dependencies
25
25
  run: |
@@ -42,7 +42,7 @@ jobs:
42
42
  app-id: ${{ vars.RELEASE_PLEASE_APP_ID }}
43
43
  private-key: ${{ secrets.RELEASE_PLEASE_APP_KEY }}
44
44
 
45
- - uses: googleapis/release-please-action@v4
45
+ - uses: googleapis/release-please-action@v5
46
46
  id: release
47
47
  with:
48
48
  # Token precedence:
@@ -68,16 +68,26 @@ jobs:
68
68
  # but this job runs immediately after that refresh on every push to main,
69
69
  # so the commit is simply re-made. `tests/unit/test_lockfile_version.py`
70
70
  # is the backstop that keeps a drifted lockfile from merging at all.
71
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
71
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
72
72
  if: ${{ steps.release.outputs.pr }}
73
73
 
74
+ # `pr` is passed through as raw JSON and parsed in the shell rather than
75
+ # with `fromJSON(...)` here. A step's `env:` expressions are evaluated even
76
+ # when its `if:` is false, and on the push that MERGES a release there are
77
+ # no new commits, so release-please emits no PR and `outputs.pr` is the
78
+ # empty string — `fromJSON('')` then fails the whole job with "Error
79
+ # reading JToken from JsonReader", after the tag and publish have already
80
+ # succeeded. That made this workflow red after every single release and
81
+ # would have masked a real failure. The neighbouring setup-uv step, which
82
+ # has the same `if:` but no `env:`, skipped correctly throughout.
74
83
  - name: Sync uv.lock onto the release PR
75
84
  if: ${{ steps.release.outputs.pr }}
76
85
  env:
77
- RELEASE_BRANCH: ${{ fromJSON(steps.release.outputs.pr).headBranchName }}
86
+ RELEASE_PR: ${{ steps.release.outputs.pr }}
78
87
  GH_TOKEN: ${{ steps.app-token.outputs.token || secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
79
88
  run: |
80
89
  set -euo pipefail
90
+ RELEASE_BRANCH="$(jq -er '.headBranchName' <<<"$RELEASE_PR")"
81
91
  git clone --branch "$RELEASE_BRANCH" --depth 1 \
82
92
  "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" release-pr
83
93
  cd release-pr
@@ -15,7 +15,7 @@ jobs:
15
15
  steps:
16
16
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
17
17
 
18
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
18
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
19
19
 
20
20
  - name: Set up Python ${{ matrix.python-version }}
21
21
  run: uv python install ${{ matrix.python-version }}
@@ -155,7 +155,7 @@ jobs:
155
155
  steps:
156
156
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
157
157
 
158
- - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
158
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
159
159
 
160
160
  - name: Build package
161
161
  run: uv build
@@ -52,7 +52,7 @@ jobs:
52
52
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
53
53
 
54
54
  - name: Install uv
55
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
55
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
56
56
 
57
57
  - name: Install remo
58
58
  run: uv sync
@@ -219,7 +219,7 @@ jobs:
219
219
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
220
220
 
221
221
  - name: Install uv
222
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
222
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
223
223
 
224
224
  - name: Install remo
225
225
  run: uv sync
@@ -338,7 +338,7 @@ jobs:
338
338
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
339
339
 
340
340
  - name: Install uv
341
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
341
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
342
342
 
343
343
  - name: Install remo
344
344
  run: uv sync
@@ -19,7 +19,7 @@ jobs:
19
19
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
20
20
 
21
21
  - name: Install uv
22
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
22
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
23
23
 
24
24
  - name: Install Ansible and dependencies
25
25
  run: |
@@ -27,6 +27,10 @@ id_rsa.pub
27
27
 
28
28
  # Test and coverage artifacts
29
29
  .coverage
30
+ coverage/
31
+ # Playwright run output (frontend/test-results, frontend/playwright-report)
32
+ test-results/
33
+ playwright-report/
30
34
  .coverage.*
31
35
  htmlcov/
32
36
  .pytest_cache/
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "4.3.3"
3
+ }
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.3.3](https://github.com/get2knowio/remo/compare/v4.3.2...v4.3.3) (2026-08-06)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **test:** make `npm run test:e2e` actually runnable ([#151](https://github.com/get2knowio/remo/issues/151)) ([050f71a](https://github.com/get2knowio/remo/commit/050f71a48965e67c2a410e4c2c09f5f20c8ce8e3))
9
+
10
+ ## [4.3.2](https://github.com/get2knowio/remo/compare/v4.3.1...v4.3.2) (2026-08-05)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **ci:** stop release-please failing on every release ([#147](https://github.com/get2knowio/remo/issues/147)) ([1e78e8d](https://github.com/get2knowio/remo/commit/1e78e8dc65f36c8f8f143a7e9eb77dbd5749b69f))
16
+
3
17
  ## [4.3.1](https://github.com/get2knowio/remo/compare/v4.3.0...v4.3.1) (2026-08-05)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remo-cli
3
- Version: 4.3.1
3
+ Version: 4.3.3
4
4
  Summary: Remote development environment CLI
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -343,6 +343,22 @@ after your macOS account holding UID 1000, and registering *that* user is what
343
343
  puts `remo-host` in the home directory the web service logs into, while skipping
344
344
  `user_setup`'s UID-1000 reassignment entirely.
345
345
 
346
+ To reach the VM from anywhere — your workstation, a homelab box, or the
347
+ `remo web` service — rather than only from its Mac, use
348
+ [`docs/examples/orbstack-cloud-init-tailscale.yaml`](docs/examples/orbstack-cloud-init-tailscale.yaml)
349
+ instead. Same file plus Tailscale; it prints the address to register on first
350
+ boot. Register the MagicDNS name, **not** the OrbStack IP:
351
+
352
+ ```bash
353
+ orb create ubuntu remo-mbp -c docs/examples/orbstack-cloud-init-tailscale.yaml
354
+ remo add mbp <user>@remo-mbp.<your-tailnet>.ts.net --verify
355
+ ```
356
+
357
+ An OrbStack VM's own IP is reachable from its Mac and nowhere else, so a
358
+ registry entry pointing at it is useless to a `remo web` service running
359
+ anywhere else. Use an **ephemeral** auth key: cloud-init keeps your user-data
360
+ on the VM's disk, so the key outlives the boot that used it.
361
+
346
362
  `remo remove NAME [--yes]` deregisters an added host by deleting **only** the
347
363
  local registry entry — it makes no connection to and no change on the remote
348
364
  environment (unlike a provider `destroy`, which tears down infrastructure). It
@@ -317,6 +317,22 @@ after your macOS account holding UID 1000, and registering *that* user is what
317
317
  puts `remo-host` in the home directory the web service logs into, while skipping
318
318
  `user_setup`'s UID-1000 reassignment entirely.
319
319
 
320
+ To reach the VM from anywhere — your workstation, a homelab box, or the
321
+ `remo web` service — rather than only from its Mac, use
322
+ [`docs/examples/orbstack-cloud-init-tailscale.yaml`](docs/examples/orbstack-cloud-init-tailscale.yaml)
323
+ instead. Same file plus Tailscale; it prints the address to register on first
324
+ boot. Register the MagicDNS name, **not** the OrbStack IP:
325
+
326
+ ```bash
327
+ orb create ubuntu remo-mbp -c docs/examples/orbstack-cloud-init-tailscale.yaml
328
+ remo add mbp <user>@remo-mbp.<your-tailnet>.ts.net --verify
329
+ ```
330
+
331
+ An OrbStack VM's own IP is reachable from its Mac and nowhere else, so a
332
+ registry entry pointing at it is useless to a `remo web` service running
333
+ anywhere else. Use an **ephemeral** auth key: cloud-init keeps your user-data
334
+ on the VM's disk, so the key outlives the boot that used it.
335
+
320
336
  `remo remove NAME [--yes]` deregisters an added host by deleting **only** the
321
337
  local registry entry — it makes no connection to and no change on the remote
322
338
  environment (unlike a provider `destroy`, which tears down infrastructure). It
@@ -0,0 +1,182 @@
1
+ #cloud-config
2
+ #
3
+ # OrbStack VM prepared for `remo add` + `remo configure`, joined to your
4
+ # Tailscale tailnet (remo >= 4.3.0).
5
+ #
6
+ # orb create ubuntu remo-mbp -c orbstack-cloud-init-tailscale.yaml
7
+ #
8
+ # This is `orbstack-cloud-init.yaml` plus Tailscale. Everything that file says
9
+ # still applies: it installs only what Ansible needs to connect and take over,
10
+ # and it creates no user — OrbStack already makes one named after your macOS
11
+ # account holding UID 1000, and registering *that* user is what puts remo-host
12
+ # in the home directory `remo web` discovery logs into while skipping
13
+ # user_setup's UID-1000 reassignment.
14
+ #
15
+ # WHY YOU WANT THIS ONE
16
+ #
17
+ # An OrbStack VM's own IP is reachable from its Mac and nowhere else. That is
18
+ # fine when remo runs on the same Mac, and useless the moment you want the
19
+ # workstation, your homelab box, or the `remo web` service to reach it. Joining
20
+ # the tailnet gives the VM a stable address that works from anywhere you are
21
+ # already logged in — the same way you reach dev1.
22
+ #
23
+ # The practical consequence for remo: register the MagicDNS name, not the
24
+ # OrbStack IP.
25
+ #
26
+ # remo add mbp <user>@remo-mbp.<your-tailnet>.ts.net --verify
27
+ #
28
+ # That address is what gets stored in the registry and pushed to the web
29
+ # service, so it must be one the service can resolve too — i.e. the service
30
+ # host must also be on the tailnet.
31
+
32
+ # ---------------------------------------------------------------------------
33
+ # EDIT THIS (1/2): the public key of the workstation that will run `remo`.
34
+ # ---------------------------------------------------------------------------
35
+ # Leave the placeholder and cloud-init keeps password auth enabled rather than
36
+ # locking you out of a keyless VM (see the guard in runcmd).
37
+ ssh_authorized_keys:
38
+ - ssh-ed25519 AAAA_REPLACE_WITH_YOUR_PUBLIC_KEY workstation
39
+
40
+ package_update: true
41
+ packages:
42
+ # Ansible needs a Python 3 interpreter on the target.
43
+ - python3
44
+ # hwclock, which `community.general.timezone` — the first task in remo's
45
+ # shared role list — hard-fails without. On Ubuntu 24.04 it lives here, and
46
+ # minimal images do not install it.
47
+ - util-linux-extra
48
+ - openssh-server
49
+ # `remo configure` installs rsync itself; having it up front means `remo cp`
50
+ # works the moment the host is registered.
51
+ - rsync
52
+ # For the Tailscale install script.
53
+ - curl
54
+
55
+ write_files:
56
+ - path: /etc/ssh/sshd_config.d/10-remo.conf
57
+ permissions: '0644'
58
+ content: |
59
+ # Managed by cloud-init for remo. Ubuntu's sshd_config Includes this dir.
60
+ Port 22
61
+ PubkeyAuthentication yes
62
+
63
+ # ---------------------------------------------------------------------------
64
+ # EDIT THIS (2/2): a Tailscale auth key.
65
+ # ---------------------------------------------------------------------------
66
+ # Generate one at https://login.tailscale.com/admin/settings/keys
67
+ #
68
+ # Make it **ephemeral** and **pre-approved**, and tag it (e.g. `tag:remo`).
69
+ # Ephemeral matters here for a real reason: cloud-init writes this user-data
70
+ # to disk on the VM (/var/lib/cloud/instance/user-data.txt) and keeps it, so
71
+ # the key outlives the boot that used it. An ephemeral key expires on its own
72
+ # and its node is reaped when it goes offline, which bounds the damage if the
73
+ # VM image or a snapshot is ever shared. A reusable non-expiring key in this
74
+ # file is a standing credential to your tailnet.
75
+ #
76
+ # Keep this file out of version control once you put a real key in it.
77
+ - path: /etc/remo-tailscale.env
78
+ permissions: '0600'
79
+ owner: root:root
80
+ content: |
81
+ TS_AUTHKEY=tskey-auth-REPLACE_WITH_YOUR_AUTH_KEY
82
+ # The machine name on your tailnet; MagicDNS makes this
83
+ # <hostname>.<your-tailnet>.ts.net
84
+ TS_HOSTNAME=remo-mbp
85
+
86
+ runcmd:
87
+ # Install the key on whichever account holds UID 1000 — OrbStack names it
88
+ # after your macOS user, so it cannot be hardcoded here.
89
+ - |
90
+ set -eu
91
+ KEY='ssh-ed25519 AAAA_REPLACE_WITH_YOUR_PUBLIC_KEY workstation'
92
+ USER_1000="$(getent passwd 1000 | cut -d: -f1)"
93
+ if [ -z "$USER_1000" ]; then
94
+ echo "remo-cloud-init: no UID 1000 account; skipping key install" >&2
95
+ exit 0
96
+ fi
97
+ HOME_1000="$(getent passwd 1000 | cut -d: -f6)"
98
+ install -d -m 700 -o "$USER_1000" -g "$USER_1000" "$HOME_1000/.ssh"
99
+ touch "$HOME_1000/.ssh/authorized_keys"
100
+ case "$KEY" in
101
+ *REPLACE_WITH_YOUR_PUBLIC_KEY*)
102
+ echo "remo-cloud-init: placeholder key not replaced; leaving password auth as-is" >&2
103
+ ;;
104
+ *)
105
+ grep -qxF "$KEY" "$HOME_1000/.ssh/authorized_keys" \
106
+ || echo "$KEY" >> "$HOME_1000/.ssh/authorized_keys"
107
+ echo 'PasswordAuthentication no' > /etc/ssh/sshd_config.d/20-remo-hardening.conf
108
+ ;;
109
+ esac
110
+ chown -R "$USER_1000:$USER_1000" "$HOME_1000/.ssh"
111
+ chmod 600 "$HOME_1000/.ssh/authorized_keys"
112
+
113
+ # Passwordless sudo. OrbStack already grants it; the explicit drop-in makes
114
+ # this file work on a plain cloud image too. `remo configure` probes for it
115
+ # up front rather than failing halfway through.
116
+ - |
117
+ set -eu
118
+ USER_1000="$(getent passwd 1000 | cut -d: -f1)"
119
+ [ -n "$USER_1000" ] || exit 0
120
+ echo "$USER_1000 ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/90-remo-$USER_1000"
121
+ chmod 440 "/etc/sudoers.d/90-remo-$USER_1000"
122
+
123
+ - systemctl enable --now ssh
124
+ - systemctl restart ssh
125
+
126
+ # Tailscale, via the vendor install script (what Tailscale's own cloud-init
127
+ # documentation uses). It adds the apt repo and installs tailscaled.
128
+ - curl -fsSL https://tailscale.com/install.sh | sh
129
+
130
+ # Join the tailnet. Split from the install so a bad key fails visibly here
131
+ # rather than looking like an install failure.
132
+ - |
133
+ set -eu
134
+ . /etc/remo-tailscale.env
135
+ case "${TS_AUTHKEY:-}" in
136
+ ''|*REPLACE_WITH_YOUR_AUTH_KEY*)
137
+ # Not fatal: the VM is still perfectly usable over its OrbStack IP from
138
+ # this Mac. Only the reach-it-from-anywhere part is missing.
139
+ echo "remo-cloud-init: no Tailscale auth key set — installed tailscaled but did not join." >&2
140
+ echo " Join later with: sudo tailscale up --hostname=${TS_HOSTNAME:-remo-mbp}" >&2
141
+ exit 0
142
+ ;;
143
+ esac
144
+ tailscale up --auth-key="$TS_AUTHKEY" --hostname="${TS_HOSTNAME:-remo-mbp}"
145
+ # The key has been redeemed; it does not need to stay readable on disk.
146
+ # (The copy cloud-init keeps in /var/lib/cloud is why an ephemeral key is
147
+ # recommended above — this only removes the copy we created.)
148
+ rm -f /etc/remo-tailscale.env
149
+
150
+ # Report the address to register, so it is in the console output rather than
151
+ # something you have to go and look up.
152
+ - |
153
+ set -eu
154
+ command -v tailscale >/dev/null 2>&1 || exit 0
155
+ tailscale status --json >/dev/null 2>&1 || exit 0
156
+ # Parse the JSON properly rather than grepping for the first "DNSName":
157
+ # peers have that field too, so a text match can hand back a DIFFERENT
158
+ # machine on your tailnet and tell you to register it. python3 is present
159
+ # (it is in `packages` above, because Ansible needs it anyway).
160
+ NAME="$(tailscale status --json | python3 -c \
161
+ 'import json,sys; print(json.load(sys.stdin)["Self"]["DNSName"].rstrip("."))' 2>/dev/null || true)"
162
+ ADDR="$(tailscale ip -4 2>/dev/null | head -1)"
163
+ [ -n "$NAME" ] || exit 0
164
+ USER_1000="$(getent passwd 1000 | cut -d: -f1)"
165
+ echo "remo-cloud-init: tailnet name=${NAME} addr=${ADDR:-none}"
166
+ echo "remo-cloud-init: register with -> remo add mbp ${USER_1000}@${NAME} --verify"
167
+
168
+ final_message: |
169
+ remo-ready after $UPTIME seconds.
170
+
171
+ This VM is on your tailnet. Register the MagicDNS name, NOT the OrbStack IP —
172
+ the OrbStack address only works from this Mac, which defeats the point:
173
+
174
+ remo add mbp <user>@remo-mbp.<your-tailnet>.ts.net --verify
175
+ remo configure mbp
176
+ remo web push # the web service must be on the tailnet too
177
+
178
+ The exact name and address were printed above by cloud-init; `tailscale
179
+ status` on the VM will show them again.
180
+
181
+ Do not pass `--skip docker` to configure: the shared role list adds the user
182
+ to the docker group, which only exists if the docker role ran.