Skip to content

chore(release): v9.36.1#2749

Merged
akiojin merged 9 commits into
mainfrom
develop
May 16, 2026
Merged

chore(release): v9.36.1#2749
akiojin merged 9 commits into
mainfrom
develop

Conversation

@akiojin
Copy link
Copy Markdown
Owner

@akiojin akiojin commented May 16, 2026

Summary

このリリースは GUI と Launch Wizard 周りの不具合修正 4 件を含む patch リリースです。Open Project の Recent ドロップダウンクリック動作、プロジェクトタブのクリック領域、Launch Wizard でのエージェント選択保持を改善しました。

Changes

Bug Fixes

  • gui: Open Project Recent click does not open project (user-select default swallows click)
  • gui: Keep Open Project Recent rows inside the dropdown and surface full path on hover
  • launch-wizard: Preserve user-selected agent across hydration
  • gui: Make full project tab clickable by disabling text selection

Version

v9.36.1 (previous: v9.36.0)

Closing Issues

Closes #2744

Related Issues / Links

Note: PR #2745 references #2014 and #2740 only in Related Issues / Links; they will not auto-close on release.

akiojin and others added 9 commits May 15, 2026 23:04
`LaunchWizardState::apply_hydration` が Runtime confirmation や custom agent
cache refresh の経路で `apply_preferred_agent_profile()` を再実行し、
ユーザーが Settings step で明示的に選んだ `agent_id` を前回 Launch agent
(preferred agent) で上書きしていた。SPEC-2014 FR-024 / FR-025 / FR-026
(2026-05-11 Local User Agent Preferences) の plan は preferred agent identity を
wizard 初期化と明示的 agent 切替時のみ適用すると規定しており、hydration 経路で
再適用するとは記述されていない。

`apply_hydration` 内の `apply_preferred_agent_profile()` 呼び出しを
`restore_agent_draft_or_defaults()` に置き換え、現在選択 agent の per-agent
draft / previous profile だけを refresh するようにする。
`apply_preferred_agent_profile` 自体は constructor 経由 (initial open) と
`set_agent_id` 経由の明示的切替で利用するため残し、関数 doc コメントに
constructor-only と明示。

SPEC-2014 に新 phase `2026-05-15 Wizard Hydration Preserves User-Selected
Agent` を追加し、US-24 / FR-054..FR-056 / SC-029..SC-030 を spec / plan /
tasks に反映。RED test 2 件 (apply_runtime_context / custom agent cache
refresh path) と既存の hydration_refresh_preserves_open_wizard_agent_settings
test を併走させ、hydration 経路で agent identity が保持されることを固定する。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(launch-wizard): preserve user-selected agent across hydration
プロジェクトタブのラベル (.project-tab-label) は `<span>` で
テキストを保持しており、`.project-tab` に user-select 指定が
無いため browser default の `text` が継承され、ラベル領域を
mousedown するとわずかなマウスのブレで text-selection drag
として処理され click event が発火しなかった。アイコン (dot)
や close ボタンは選択対象テキストが無い / button 要素 default
で user-select: none のため影響を受けず、結果として「ラベル
だけクリックが効かない、連打で稀に切り替わる」症状を生んでいた。

`.project-tab` 親要素に `user-select: none` を 1 行追加し、
label / dot / close 全子要素へ継承させる。タブ内テキストは
ドラッグ選択できなくなるが、project_root は title 属性で
提示済みで UX 上の損失はない。

回帰防止のため project-tab-style.test.mjs を追加し、CSS rule
から user-select 指定が失われた場合に test が落ちるよう assert。
package.json test:frontend-unit に新規 test を登録。

Closes #2744

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t default swallows click)

Closes #2746

`.split-button-menu-recent-row` と `.recent-project-row` は `<button>` だが
子要素として `<span class="...title">` と `<span class="...meta">` を持つ。
これらの span は user-select 指定がないため WebKit (wry GUI) で
`user-select: auto` を継承し、わずかな pointer のブレで browser がテキスト
選択ドラッグと判定して click を swallow していた。dropdown は閉じず、
プロジェクトも開かない症状になっていた。

Issue #2744 が同じ root cause pattern を `.project-tab` で確定済みのため、
両 selector に `user-select: none` を 1 行ずつ追加して mirror する。回帰防止
test (crates/gwt/web/__tests__/recent-row-style.test.mjs) を新規追加し、
CSS rule に `user-select: none` が含まれることを assert する。

検証: pnpm test:frontend-unit (468 pass) / pnpm test:frontend-smoke (17 pass)
/ cargo test -p gwt --lib (637 pass) / cargo clippy -p gwt --all-targets
--all-features -- -D warnings / cargo fmt --check / curl で配信される
app.css が `user-select: none` を含むことを確認。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(gui): make full project tab clickable by disabling text selection
…ce full path on hover

Refs #2746

PR #2748 の user-select fix で click は通るようになったが、E2E 検証で 2 つの
follow-up を発見:

1. Recent 行の hover 背景が dropdown 右端を 27px はみ出していた。原因は
   `.split-button-menu-recent` の grid が implicit `auto` track で、長い meta
   path に合わせて column 幅が膨らんでいたこと。`grid-template-columns:
   minmax(0, 1fr)` で column を menu 内側に固定し、`.split-button-menu-recent-row`
   に `min-width: 0` を追加して flex column の min-content 既定を解除した。
   これで meta span の `text-overflow: ellipsis` が実際に発火する。

2. meta が ellipsis されると、どのディレクトリか判別できなくなった。各 Recent
   行に `title="${kind} · ${path}"` を付け、native hover/focus tooltip で
   full path を提示する。dropdown 側 (`renderRecentProjectsIntoMenu`) と picker
   overlay 側 (`renderRecentProjects`) の両方に適用。

回帰防止: `crates/gwt/web/__tests__/recent-row-style.test.mjs` に 4 件の
assertion を追加 (grid-template-columns / min-width / 両 renderer の row.title
代入を string match で検査、計 6 tests pass)。

検証: pnpm test:frontend-unit (471 pass) / pnpm test:frontend-smoke (17 pass)
/ cargo fmt --check / 実 browser (target/debug/gwt @ Playwright MCP) で Recent
行が menu 内に収まり、meta が ellipsis され、row.title が `${kind} · ${path}`
に設定されることを確認。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(gui): Open Project Recent click does not open project (user-select default swallows click)
@akiojin akiojin added the release Release automation label May 16, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 16, 2026

Warning

Rate limit exceeded

@akiojin has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 41 minutes and 24 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 910ea4cb-fb7d-4ff7-a3d3-2d0b50583332

📥 Commits

Reviewing files that changed from the base of the PR and between a94fec2 and daffc22.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (8)
  • CHANGELOG.md
  • Cargo.toml
  • crates/gwt/src/launch_wizard.rs
  • crates/gwt/web/__tests__/project-tab-style.test.mjs
  • crates/gwt/web/__tests__/recent-row-style.test.mjs
  • crates/gwt/web/app.js
  • crates/gwt/web/styles/app.css
  • package.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: daffc22d32

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 1046 to +1047
if refreshed_previous_profiles && self.launch_path != LaunchWizardLaunchPath::QuickStart {
self.apply_preferred_agent_profile();
self.restore_agent_draft_or_defaults();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Preserve preferred agent on first hydration

apply_hydration now calls restore_agent_draft_or_defaults() instead of apply_preferred_agent_profile(), which means the preferred agent identity is never applied when the wizard is opened via open_loading and profiles arrive asynchronously. In that common path, agent_id is first set to the first detected agent, so refreshing previous_profiles no longer switches to the user's saved preferred agent unless they manually reselect it, regressing initial launch defaults for users with a non-default preference.

Useful? React with 👍 / 👎.

@akiojin akiojin merged commit bb6cd33 into main May 16, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(gui): project tab label click does not switch tabs (user-select default swallows click)

1 participant