Skip to content

feat(editor): ネスト URI の案内に DEVBASE_EDITOR_SSH_HOST= でフラット URI へ切り替える方法を添える - #174

Merged
takemi-ohama merged 3 commits into
mainfrom
feat/editor-flat-uri-opt-out-hint
Sep 14, 2026
Merged

takemi-ohama merged 3 commits into
mainfrom
feat/editor-flat-uri-opt-out-hint

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Remote-SSH 統合ターミナル(Windows VS Code → Mac)から devbase up し、コンテナが ssh 先とも別のホスト(WSL2 の docker context wsl)にある構成で、[6/6] は Mac を経由するネスト URI で code を起動し、「手元の VS Code に同名の context があれば直接 attach できる」フラット URI を案内だけしていた。手元で直接開くには毎回そのフラット URI を手で貼る必要があった。

空文字 DEVBASE_EDITOR_SSH_HOST= による自動検出のオプトアウト(resolve_editor_ssh_host)は実装済みだったが、案内にもドキュメントにも書かれておらず利用者が辿り着けなかったので、案内とドキュメントに示す。コードの分岐は変えない。

変更点

  • lib/devbase/editor/opener.py: フラット URI の案内の直後に env に DEVBASE_EDITOR_SSH_HOST= (空) を書くと、次回からこのフラット URI で直接開きます を出す。案内は context が devbase の解決結果か DEVBASE_EDITOR_DOCKER_CONTEXT の明示から来ているときだけ(docker context show の推測だけが元のときは、空文字で settings.context も消えるため出さない。cross-review codex 指摘)
  • lib/devbase/editor/opener.py: DEVBASE_EDITOR_DOCKER_CONTEXT の明示は ssh の有無によらず settings.context に載せる(推測だけを ssh 先に限る)
  • docs/user/environment-variables.md: 変数表に空文字の意味を追記。「手元の context で直接開く(ネストのオプトアウト)」節を追加し、前提(code の実行先で docker --context <ctx> ps が通ること、dev.containers.executeInWSL: true なら WSL 内に同名 context を作る)を書く
  • docs/specifications/remote-docker-context.md: attach URI 節に空文字オプトアウトを追記
  • tests/editor/test_opener.py: 案内に DEVBASE_EDITOR_SSH_HOST= が含まれること/空文字 + 解決済み context でネスト無し・settings.context 付きフラット URI で launch すること

Test plan

  • uv run pytest tests/editor/test_opener.py -q → 105 passed, exit=0
  • uv run pytest tests -q → 2204 passed, exit=0
  • uvx ruff check --select=E9,F63,F7,F82 lib(CI と同じ規則)→ All checks passed, exit=0
  • 実機: WSL 内に docker context create wsl --docker host=unix:///var/run/docker.sock、Windows VS Code は dev.containers.executeInWSL: true、projects/investment/env に DEVBASE_EDITOR_SSH_HOST= を置いて Remote-SSH 統合ターミナルから devbase up investment → Mac を経由せず Windows の VS Code が WSL の investment-dev-1 へ直接 attach(takemi-ohama/devbase-ext#22)

動作確認

  • 影響を受けるコマンドの主要シナリオを手動で確認した(上記 実機)
  • 必要に応じてドキュメント (docs/) を更新した
  • CI が green である

🤖 Generated with Claude Code

https://claude.ai/code/session_01LeGvZnJ6w7NK7wWoVyN9H5

…法を添える

Remote-SSH 統合ターミナルから up し、コンテナが ssh 先とも別のホスト (WSL2 等) に
あるとき、案内に出るフラット URI を毎回手で貼らないと直接 attach できなかった。
空文字による自動検出のオプトアウト (resolve_editor_ssh_host) は実装済みだが、案内
にもドキュメントにも書かれておらず、利用者が辿り着けない。

- 案内の直後に `DEVBASE_EDITOR_SSH_HOST=` (空) で恒久化できることを示す
- 環境変数ガイドに「手元の context で直接開く」節を足し、前提 (実行先で
  `docker --context <ctx> ps` が通ること、executeInWSL のときは WSL 内に同名 context)
  を書く
- 仕様書 (remote-docker-context) の attach URI 節へ空文字の意味を追記
- 空文字 + 解決済み context でフラット URI + settings.context で launch するテスト

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeGvZnJ6w7NK7wWoVyN9H5

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | kiro | APPROVE

既存の空文字オプトアウト(resolve_editor_ssh_host)に案内・ドキュメント・テストを追加するだけの変更で、分岐ロジックは不変。opener.py の追加は info ログ 1 行のみ、docs は変数表と新節が実装の挙動(空文字で自動検出を行わず settings.context 付きフラット URI)と一致、tests/editor/test_opener.py は案内文言と空文字時のフラット URI 起動を検証している。uv run pytest tests/editor/test_opener.py は 103 passed。修正を要する指摘はなし。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | agy | APPROVE

実装・ドキュメント・テストともに要件を満たしており、指摘事項はありません。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | APPROVE

hint 追加・ドキュメント・テストのみの最小変更。opener.py は logger.info 1 行の追加で分岐変更なし。ドキュメントの空文字オプトアウトの記述は resolve_editor_ssh_host(空文字→None→フラット URI)と resolve_docker_context(default 経由で settings.context 維持)の実挙動と一致。新規テストはフラット URI・settings.context=wsl 維持・subprocess 非呼び出し・ネスト案内の非表示を検証しており妥当。修正を要する指摘なし。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | codex | REQUEST_CHANGES

案内の適用条件に関する修正指摘が1件あります。

Comment thread lib/devbase/editor/opener.py Outdated
`docker context show` の推測だけから settings.context が付いている構成で案内どおり
DEVBASE_EDITOR_SSH_HOST= (空) を書くと、ssh_host が外れて推測も行われず
settings.context が消え、提示したフラット URI と違う daemon へ繋ぎに行く
(cross-review codex 指摘)。

- 案内は resolved (devbase の解決結果) か DEVBASE_EDITOR_DOCKER_CONTEXT の明示が
  あるときだけ出す
- DEVBASE_EDITOR_DOCKER_CONTEXT の明示は ssh の有無によらず settings.context に
  載せる (推測だけを ssh 先に限る)
- ドキュメントに前提 (context の出所) を明記

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeGvZnJ6w7NK7wWoVyN9H5
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ (round 2)

対応件数: critical=0 / major=1 / minor=0 (合計 1 件)
deferred: 0 件 / rejected: 0 件
commit: c759338
CI: PENDING(push 直後)

詳細

  • lib/devbase/editor/opener.py:702 [major] 恒久化の案内を context が明示か devbase の解決結果のときに限定。docker context show の推測だけの構成では案内を出さない。DEVBASE_EDITOR_DOCKER_CONTEXT の明示は ssh の有無によらず settings.context に載せる。ドキュメントに前提を明記、テスト 2 件追加

検証: uv run pytest tests -q → 2204 passed (exit=0) / uvx ruff check --select=E9,F63,F7,F82 lib → exit=0

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | codex | APPROVE

修正を要する指摘はありません(対象テスト 105 件成功)。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | agy | APPROVE

実装、テスト、ドキュメントの整合性を確認しました。指摘事項はありません。

@takemi-ohama
takemi-ohama merged commit 78f6bb0 into main Sep 14, 2026
5 checks passed
@takemi-ohama
takemi-ohama deleted the feat/editor-flat-uri-opt-out-hint branch September 14, 2026 11:45
@takemi-ohama takemi-ohama mentioned this pull request Sep 15, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant