Skip to content

GitHub レーンの折りたたみと、日付がずれるバグの修正 - #47

Merged
sasagar merged 2 commits into
mainfrom
dev
Aug 2, 2026
Merged

GitHub レーンの折りたたみと、日付がずれるバグの修正#47
sasagar merged 2 commits into
mainfrom
dev

Conversation

@sasagar

@sasagar sasagar commented Aug 2, 2026

Copy link
Copy Markdown
Member

GitHub レーンを折りたためるように

利用者要望: 「GitHub の一覧が表示されるセクションが広くなって予定の表示が見れなくなる場合があります。折りたためるようにできますか?」

レーンは終日行とタイムラインの間にあるので、伸びるとカレンダーを下へ押し出す。

行ラベルを <button> にして操作点にした。 日列の中にボタンを置くと issue/PR のリンクと押し分けにくく、レーンの外に置くと「何のトグルか」が離れる。見た目は CalendarPane のアカウント見出しと同じ ▸/▾ + ラベル

畳んだときは日ごとの件数バッジを出す。 全体で合計1つだと「今日ぶんなのか週末ぶんなのか」が分からず開くまで判断できない。展開時と同じ日列構造をそのまま使えば1行で「どの日にどれだけあるか」が伝わり、目当ての日があるときだけ開けばよくなる。単位「件」を DOM に出したのは、数字だけだと読み上げが「15」としか読まれないため。

週表示・標準ズームで 展開 215px → 折りたたみ 22px

高さ上限は併用しない。 .week-grid-github には既に max-height: 30vh があり、milestone グループ数の上限と「+N」も効いている。追加の上限は「展開状態の見た目を変えない」に反する。

🔴 既存バグ: GitHub の項目が間違った日に表示されていた

GitHubLane が項目の無い日に null を返しており、親が grid-template-columns: repeat(dayCount, 1fr)暗黙配置なので、以降の日が1列ずつ手前へ詰まって日付がずれていた — 金曜だけ項目がある週で、木曜の列に描かれる。

空の器(高さ0)を返すよう修正。パネルの子が 4 → 7 になることを DOM で確認済み。

報告のみ(未修正)

.week-grid-github-viewportoverflow: hidden のため、30vh を超えた分はスクロールできず黙って切られる(scrollHeight === clientHeight を実測)。今回の折りたたみで実害は減るが、直すと展開時の見た目が変わる(スクロールバーが出る)ので手を付けていない。

検証

  • テスト 1485 → 1499(既存は書き換えなし、新規 14 + 新規ファイル1)
  • typecheck / lint / build / build:site
  • 実ブラウザで 週/3日/1日 × ライト/ダーク × 展開/折りたたみ、月表示にレーンが無いこと、GitHub 未連携でレーン自体が出ないことを確認
  • キーボード / スクリーンリーダー: Tab 到達・Enter で開閉・フォーカス維持、a11y ツリーで button "GitHub" expandable expanded(カレットは aria-hidden)
  • 展開状態の差分はカレットの追加と、上記バグ修正による正しい列への移動の2点のみ

デモ用の GitHub データを追加(レーンが伸びる日 / +N が出る日 / milestone なし issue を含む5日分・計25件)。?demo=1 のときだけメモリ上に載せ、IndexedDB には書かない。

🤖 Generated with Claude Code

https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ

sasagar and others added 2 commits August 2, 2026 21:36
連携解除の2段階確認にチェックボックスを足せば「聞ける瞬間」を作れる、という提案を
検討した結果、**作らない**。同じ提案が繰り返し出ないよう理由を残す。

技術的には可能で、難所は順序だけだった(ミラー削除は target の認可が要るので revoke より
前、しかもアカウントごとのループの前に置く必要がある)。それでも作らない理由:

**問いの主語が違う。** 解除の主語は「このアカウントが kichijitsu から抜ける」で、Google 上の
予定を消すかは別の話。とくにオーナー解除は束ごとなので、ひとつのチェックで利用者が今
見ていないルールぶんまで破壊が走る。a5d453a の「明示的に選んだときだけ」は、ルール削除の
確認のように**選択の主語が削除そのもので、対象が目の前にある**場面を指しており、別の操作に
相乗りするチェックは弱い同意しか作らない。

**何件消えるか示せない。** block_mirrors はサーバー専用なので件数には新 API と読み込み状態が
要る。**チェックが出たり出なかったりする** ― 選択が意味を持つのはルールごと消える場合だけで、
理由(どのルールが死ぬか)はアカウント一覧の画面に見えない。

**best-effort が成立しない。** ルール削除は「Google の削除に失敗した行は対応表に残す」ことで
辿れない孤児を防いでいるが、解除ではルールごと行が消えるので残しようが無く、target は
revoke 済みで再試行手段が原理的に無い。加えて applyMirrorDeletions は1件ずつ直列なので、
「解除は失敗させない」経路の先頭に長くて不可逆な書き込みが乗る。

現状の回避策: 消したいなら先にルールを削除(既定チェック済み・対象が見える状態で選べる)
してから解除する。

将来やるならこちら: 「コピー先に残った kichijitsu のブロック予定を掃除する」独立した導線。
ミラー予定自身が kichijitsuMirror=1 と由来を持つ(孤児回収に使用済み)ので対応表が無くても
target の走査で見つかり、ルール削除・target 変更・連携解除のどれで出た孤児かを区別せず
片付けられ、件数も実物から出せ、操作の主語が「この予定を消す」そのものになる。

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ
利用者要望「GitHub の一覧が表示されるセクションが広くなって予定の表示が見れなくなる」。
レーンは終日行とタイムラインの間にあるので、伸びるとカレンダーを下へ押し出す。

行ラベルを button にして操作点にした。日列の中にボタンを置くと issue/PR のリンクと
押し分けにくく、レーンの外に置くと「何のトグルか」が離れる。見た目は CalendarPane の
アカウント見出しと同じ ▸/▾ + ラベルに揃えた。

**畳んだときは日ごとの件数バッジを出す。** 全体で合計1つだと「今日ぶんなのか週末ぶんなのか」
が分からず開くまで判断できない。展開時と同じ日列構造をそのまま使えば1行で「どの日に
どれだけあるか」が伝わり、目当ての日があるときだけ開けばよくなる。単位「件」を DOM に
出したのは、数字だけだと読み上げが「15」としか読まれないため。週表示・標準ズームで
展開 215px → 折りたたみ 22px。

**高さ上限は併用しない。** .week-grid-github には既に max-height: 30vh があり、
milestone グループ数の上限と「+N」も効いている。追加の上限は「展開状態の見た目を
変えない」に反する。

## 既存バグを1件修正

GitHubLane が項目の無い日に null を返しており、親が grid-template-columns:
repeat(dayCount, 1fr) の暗黙配置なので**以降の日が1列ずつ手前へ詰まって日付が
ずれていた**(金曜だけ項目がある週で木曜の列に描かれる)。空の器を返すよう直し、
パネルの子が 4 → 7 になることを DOM で確認した。

テストは 1485 → 1499(既存は書き換えなし)。展開状態の差分はカレットの追加と、
上記バグ修正による正しい列への移動の2点のみ。

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HGESE2zBNzoW8MYvtEySBQ
@sasagar
sasagar merged commit 6e23595 into main Aug 2, 2026
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