Conversation
max-height: 30vh を超えた分がスクロールできず消えていた。実測で issue/PR 4件が 完全に見えず1件が途中切断、タスクレーン相当の器では 386px が消えていた。 **原因は viewport の align-self が既定の stretch だったこと。** viewport がレーンの 切り詰められた高さまで引き伸ばされるため、中身が高くてもレーン自身は「はみ出して いない」状態(scrollHeight === clientHeight)になり、**レーンに元から書いてあった overflow-y: auto がスクロールバーを出す機会が無かった**。はみ出しは viewport の overflow: hidden(週送りスライドのための**横方向**のクリップ)が黙って引き受けていた。 設計変更ではなく、意図が効いていなかった不具合。align-self: flex-start の1行で戻る。 高さ由来の「+N」は足さない。打ち切りが二重になるうえ、高さの上限はレーン全体に・ 「+N」は日ごとに掛かるので、2つの N が別の粒度で並んでどちらを見ているか分からなくなる。 打ち切りは「+N」の1箇所に閉じ込め、高さ超過はスクロールで解決する役割分担にした (GITHUB_MAX_VISIBLE_MILESTONES はグループ数の上限であって高さの上限ではなく、 2グループ × 6件 = 15行 で上限内でも 30vh を超える)。 あわせて2点。scrollbar-gutter: stable ― 常時表示型スクロールバーの環境で、溢れた週だけ 日列が細くなって終日レーン・時刻グリッドと列がずれるのを防ぐ(終日レーンと本体は既に stable なので揃えただけ)。gutter に position: sticky ― スクロールすると行ラベルが 流れて消える。GitHub 側はそのラベルが畳むボタンそのもの。 タスクレーンも構造も原因も同一だったので同じ直し方を当てた。 溢れていない場合が不変であることは、DOM ジオメトリで確認(30vh に収まる高さで .week-grid-github 配下の全154要素の x/y/width/height を突き合わせて差分ゼロ)。 ピクセル比較は現在時刻線があり無変更でも一致しないため。 なお macOS のオーバーレイ型スクロールバーは静止時に出ないので、静止画では行の途中切れ 以外に手がかりが無い。恒常的な目印(下端のフェード等)は入れていない。 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ
MCP 仕様 2026-07-28 は initialize ハンドシェイクと Mcp-Session-Id を廃止し、 リクエストごとに _meta でバージョンを運ぶステートレス方式へ移行した破壊的改訂。 kichijitsu は 2025-11-25 を名乗ったままで、新仕様の tools/list が 「Mcp-Session-Id header is required」で完全に不通だった。 SDK を上げるだけでは済まない: 2026-07-28 対応は SDK v2 (別パッケージの @modelcontextprotocol/server) にあり、McpAgent は agents 0.20.0 で deprecated / feature-frozen になって新仕様を話せない。このため McpAgent (Durable Object + SDK v1) から createMcpHandler + SDK v2 へ移行する。 ツール10本の意味論は保存したまま mcp-server.ts へ移設した。 あわせて Origin 検証を追加する。DNS リバインディング対策として両リビジョン 共通の MUST でありながら実装が無く、適合性スイートでも落ちていた (SDK 非依存の自前実装の穴)。認証より先に評価する。Origin 無しは許可 — 仕様の条件が "present and invalid" であり、Claude 等の非ブラウザ クライアントは Origin を送らないため (mcp-origin.ts のコメント参照)。 適合性スイート (@modelcontextprotocol/conformance、ローカルの wrangler dev に対してのみ実施): server-stateless (2026-07-28) 5/31 → 24/28 ※残り4件は Not testable http-header-validation — → 13/13 tools-list (2026-07-28) 不通 → 2/2 dns-rebinding-protection 1/2失敗 → 2/2 server-initialize (2025-11-25) 通過 → 1/1 通過 後方互換: createMcpHandler は1本のハンドラで両世代を捌く (legacy: "stateless" レーンが initialize を受ける)。2026-07-28 は initialize からネゴシエート されない設計なので、設定済みの Claude はこれまで通り 2025-11-25 で接続する。 MCP が DO を経由しなくなったので、規約とドキュメントの「返した予定の要約が Durable Object の作業領域を通る」という記述を実態に合わせて削除した (privacy.html の JA/EN と docs/data)。もう存在しない仕組みの説明だった。 test 755 → 771 passed (既存テストの書き換えなし、+16 は Origin 検証の新規) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub レーンの溢れが黙って切られるのを直す (a8b467e)
レーンには最初から
overflow-y: autoが書かれていたのに効いていなかった。子の.week-grid-github-viewportが既定のalign-self: stretchだったため、子がレーンの高さまで縮められ
scrollHeightがclientHeightを超えず、スクロールバーを出す条件が成立しない。溢れは横方向の週送りクリップ用の
overflow: hiddenが吸収するので、警告も出ずに項目が消えていた。
align-self: flex-startで解消。なお macOS のオーバーレイスクロールバーは静止時に出ないため、静的な手がかりは
依然として「行が途中で切れて見える」ことだけ。フェード表示はやりすぎと判断して見送った。
MCP を 2026-07-28 仕様に追随させる (50ab74f)
仕様 2026-07-28 は
initializeハンドシェイクとMcp-Session-Idを廃止した破壊的改訂。kichijitsu は 2025-11-25 のままで、新仕様の
tools/listが完全に不通だった。SDK を上げるだけでは済まなかった — 2026-07-28 対応は SDK v2 (別パッケージ) にあり、
McpAgentは agents 0.20.0 で deprecated / feature-frozen。このためMcpAgent(DO + SDK v1) →createMcpHandler+ SDK v2 へ移行した。あわせて Origin 検証を追加した。 両リビジョン共通の MUST でありながら実装が無く、
適合性スイートでも落ちていた (SDK 非依存の自前実装の穴)。認証より先に評価する。
適合性スイート (ローカル
wrangler devに対してのみ実施)server-stateless(2026-07-28)http-header-validationtools-list(2026-07-28)dns-rebinding-protectionserver-initialize(2025-11-25)残り4件はすべて "Not testable" (診断用フィクスチャツール未実装、または未公開の capability)。
後方互換
createMcpHandlerは1本のハンドラで両世代を捌く。2026-07-28 はinitializeからネゴシエートされない設計なので、設定済みの Claude は従来どおり 2025-11-25 で接続する。
ローカルで旧世代
tools/listが10ツール全て返しwork_summary呼び出しが成功することを実測済み。レビュー時の注意
migration v4で本番の DO クラスKichijitsuMcpAgentを削除する。read-through 設計で永続データを持っていなかったので失われる状態はないが、一方通行の変更。
allowedOriginHostnames: "*"とmcp-origin.tsはセットで初めて安全。ハンドラ既定の許可リストが本番ドメインを弾くため無効化し、代わりに自前検証を手前に置いている。片方だけ消さないこと。
ドキュメント
MCP が DO を経由しなくなったので、規約の「返した予定の要約が Durable Object の作業領域を
通る」という記述を削除した (privacy.html の JA/EN と docs/data)。もう存在しない仕組みの説明だった。
sync 771 passed / web 1499 passed / lint 通過 / 公式ビルドのプレースホルダ埋込・自己ホスト漏れ検査ともにクリーン。
🤖 Generated with Claude Code
https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ