Skip to content

feat: Settings now shows selectable tool details - #1408

Merged
hatayama merged 7 commits into
v3-betafrom
feature/improve-tool-settings-ui
Jun 26, 2026
Merged

feat: Settings now shows selectable tool details#1408
hatayama merged 7 commits into
v3-betafrom
feature/improve-tool-settings-ui

Conversation

@hatayama

@hatayama hatayama commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Settings can now show each tool description inline with a Show Details toggle, and the displayed text can be selected for copying.
  • Setup now explains CLI protocol compatibility updates instead of showing confusing same-version release updates.

User Impact

  • Users can inspect what each enabled or disabled tool does directly from Tool Settings without relying on the removed reference link.
  • Long tool descriptions and the Tool Settings note are selectable, so users can copy text when checking or reporting configuration details.
  • When the CLI release version matches but the IPC protocol does not, Setup now shows the required protocol version instead of suggesting an update from the same version to itself.

Changes

  • Load tool descriptions from installed skill metadata and pass them into the Tool Settings UI.
  • Replace the old details presentation with Show Details / Hide Details rows that use read-only selectable text fields.
  • Update Setup and Settings CLI button/status labels for protocol mismatch cases.

Verification

  • cli/dist/darwin-arm64/uloop compile --project-path <PROJECT_ROOT>
  • cli/dist/darwin-arm64/uloop run-tests --test-mode EditMode --filter-type regex --filter-value ".ToolSettingsSectionTests."
  • cli/dist/darwin-arm64/uloop run-tests --test-mode EditMode --filter-type regex --filter-value ".(CliSetupSectionTests|SetupWizardWindowTests|UnityCliLoopSettingsWindowCliActionTests)."
  • autoreview --mode branch --base origin/v3-beta: clean

Review in cubic

hatayama added 6 commits June 26, 2026 00:50
Surface skill descriptions directly in Tool Settings so users can inspect each tool without relying on the stale CLI reference link.

- Load source skill descriptions into the tool catalog
- Show a per-tool ? button only when a description exists
- Toggle the description popup for the selected tool
Change the per-tool help display from an inline block to an overlay dialog so descriptions do not shift the Tool Settings list layout.

- Mount the description overlay at the settings window root
- Style the dialog with a dim backdrop
- Cover the overlay placement behavior with EditMode tests
Match the Unity MCP tools list pattern by replacing the question-mark dialog with a Show Details button that expands the selected tool description below its row.

- Add an inline details row under the selected tool
- Toggle button text between Show Details and Hide Details
- Update Tool Settings tests for details row placement
Use a read-only multiline text field for expanded tool descriptions so users can select and copy the Show Details content without editing it.
Render the Tool Settings note as a read-only text field so users can select the simplified guidance text without editing it.
Show protocol-focused setup text when the installed and required CLI release versions match but the IPC protocol generation does not. Update the CLI action tests to match the current required protocol version.
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 716a320d-7f33-4dd6-858e-dc59c6c38cc8

📥 Commits

Reviewing files that changed from the base of the PR and between a9371e8 and 83cadc4.

⛔ Files ignored due to path filters (1)
  • Packages/src/Editor/Presentation/CliSetupLabelFormatter.cs.meta is excluded by none and included by none
📒 Files selected for processing (4)
  • Packages/src/Editor/Presentation/CliSetupLabelFormatter.cs
  • Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs
  • Packages/src/Editor/Presentation/UIToolkit/Components/CliSetupSection.cs
  • Packages/src/Editor/Presentation/UIToolkit/Components/ToolSettingsSection.cs

📝 Walkthrough

Walkthrough

Skill descriptions from SKILL.md are parsed into the tool catalog, carried into tool settings UI data, and shown in expandable tool details. CLI setup status and button labels now choose protocol-aware wording in compatibility cases.

Changes

Skill Metadata and Setup UI

Layer / File(s) Summary
Skill descriptions into tool catalog
Packages/src/Editor/Infrastructure/SkillSetup/..., Packages/src/Editor/Application/UseCases/ToolSettingsUseCase.cs, Packages/src/Editor/CompositionRoot/UnityCliLoopApplicationRegistration.cs, Assets/Tests/Editor/ToolSettingsUseCaseTests.cs, Assets/Tests/Editor/ToolSkillSynchronizerTests.cs
Skill frontmatter descriptions are parsed, mapped to tool names, injected through a new description provider, and included in tool catalog output.
Tool settings info text
Packages/src/Editor/Presentation/UnityCliLoopSettingsWindow.cs, Packages/src/Editor/Presentation/UnityCliLoopSettingsWindowViewData.cs, Packages/src/Editor/Presentation/UIToolkit/Components/ToolSettingsSection.cs, Packages/src/Editor/Presentation/UIToolkit/UnityCliLoopSettingsWindow.uxml, Packages/src/Editor/Presentation/UIToolkit/UnityCliLoopSettingsWindow.uss, Assets/Tests/Editor/ToolSettingsSectionTests.cs
ToolToggleItem now carries SkillDescription, and the tool settings info area renders a read-only text field instead of the prior label/link container.
Expandable tool details
Packages/src/Editor/Presentation/UIToolkit/Components/ToolSettingsSection.cs, Packages/src/Editor/Presentation/UIToolkit/UnityCliLoopSettingsWindow.uss, Assets/Tests/Editor/ToolSettingsSectionTests.cs
Tool rows now support expandable details panels, dynamic list height, row-type filtering, and tests for details visibility, toggling, and selection changes.
Protocol-aware CLI labels
Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs, Packages/src/Editor/Presentation/UIToolkit/Components/CliSetupSection.cs, Assets/Tests/Editor/CliSetupSectionTests.cs, Assets/Tests/Editor/SetupWizardWindowTests.cs, Assets/Tests/Editor/UnityCliLoopSettingsWindowCliActionTests.cs
CLI status and primary button text now switch between version-based and protocol-based wording, and the test matrices were updated for the new compatibility cases.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • hatayama/unity-cli-loop#855: Introduced the SetupWizardWindow CLI install/version flow that this PR extends with protocol-aware status and button text.
  • hatayama/unity-cli-loop#992: Touched the same tool settings UI and row handling that this PR extends with skill descriptions and expandable details.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and matches the main change: selectable tool details in Settings.
Description check ✅ Passed The description is clearly related to the UI and protocol-messaging changes in this pull request.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/improve-tool-settings-ui

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs (1)

910-928: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated protocol-label helpers across two presentation classes.

GetCliReplacementButtonText and ShouldShowProtocolCompatibilityText here are byte-identical to the copies in CliSetupSection.cs (Lines 256-274). The two will need to stay in lockstep; consider extracting them into a shared helper (e.g. alongside CliVersionComparer/CliConstants) so the protocol-vs-version wording rule lives in one place.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs` around lines 910
- 928, The protocol-label logic is duplicated between
SetupWizardWindow.GetCliReplacementButtonText/ShouldShowProtocolCompatibilityText
and the copy in CliSetupSection, so it can drift out of sync. Extract this
wording decision into one shared helper near CliVersionComparer/CliConstants,
then update both callers to use it so the protocol-vs-version button text is
defined in a single place.
Assets/Tests/Editor/ToolSkillSynchronizerTests.cs (1)

1139-1147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a fixture-backed test for the name-prefix fallback.

This asserts current built-in SKILL.md copy, but the new production branch in ResolveToolNameForSkillSource is the fallback when toolName is omitted. A temporary skill fixture with description: and no toolName: would pin that branch directly and avoid copy-only metadata edits breaking the parser test.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Assets/Tests/Editor/ToolSkillSynchronizerTests.cs` around lines 1139 - 1147,
The existing test in GetToolDescriptionsByToolName only verifies current
built-in SKILL.md text, but it does not cover the new fallback path in
ResolveToolNameForSkillSource when toolName is omitted. Update
ToolSkillSynchronizerTests to add a fixture-backed case using a temporary skill
with description and no toolName so the mapping logic is exercised directly.
Keep the current assertions for description lookup, but base the new test on the
fallback branch rather than copy-specific metadata so parser behavior is pinned
even if built-in skill text changes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@Assets/Tests/Editor/ToolSkillSynchronizerTests.cs`:
- Around line 1139-1147: The existing test in GetToolDescriptionsByToolName only
verifies current built-in SKILL.md text, but it does not cover the new fallback
path in ResolveToolNameForSkillSource when toolName is omitted. Update
ToolSkillSynchronizerTests to add a fixture-backed case using a temporary skill
with description and no toolName so the mapping logic is exercised directly.
Keep the current assertions for description lookup, but base the new test on the
fallback branch rather than copy-specific metadata so parser behavior is pinned
even if built-in skill text changes.

In `@Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs`:
- Around line 910-928: The protocol-label logic is duplicated between
SetupWizardWindow.GetCliReplacementButtonText/ShouldShowProtocolCompatibilityText
and the copy in CliSetupSection, so it can drift out of sync. Extract this
wording decision into one shared helper near CliVersionComparer/CliConstants,
then update both callers to use it so the protocol-vs-version button text is
defined in a single place.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2e8e449e-3140-4d6e-99eb-04003bdaae16

📥 Commits

Reviewing files that changed from the base of the PR and between 8e503c6 and a9371e8.

⛔ Files ignored due to path filters (1)
  • Packages/src/Editor/Infrastructure/SkillSetup/SkillInstallLayoutToolSkillDescriptionProvider.cs.meta is excluded by none and included by none
📒 Files selected for processing (18)
  • Assets/Tests/Editor/CliSetupSectionTests.cs
  • Assets/Tests/Editor/SetupWizardWindowTests.cs
  • Assets/Tests/Editor/ToolSettingsSectionTests.cs
  • Assets/Tests/Editor/ToolSettingsUseCaseTests.cs
  • Assets/Tests/Editor/ToolSkillSynchronizerTests.cs
  • Assets/Tests/Editor/UnityCliLoopSettingsWindowCliActionTests.cs
  • Packages/src/Editor/Application/UseCases/ToolSettingsUseCase.cs
  • Packages/src/Editor/CompositionRoot/UnityCliLoopApplicationRegistration.cs
  • Packages/src/Editor/Infrastructure/SkillSetup/SkillInstallLayout.cs
  • Packages/src/Editor/Infrastructure/SkillSetup/SkillInstallLayoutInternalToolNameProvider.cs
  • Packages/src/Editor/Infrastructure/SkillSetup/SkillInstallLayoutToolSkillDescriptionProvider.cs
  • Packages/src/Editor/Presentation/Setup/SetupWizardWindow.cs
  • Packages/src/Editor/Presentation/UIToolkit/Components/CliSetupSection.cs
  • Packages/src/Editor/Presentation/UIToolkit/Components/ToolSettingsSection.cs
  • Packages/src/Editor/Presentation/UIToolkit/UnityCliLoopSettingsWindow.uss
  • Packages/src/Editor/Presentation/UIToolkit/UnityCliLoopSettingsWindow.uxml
  • Packages/src/Editor/Presentation/UnityCliLoopSettingsWindow.cs
  • Packages/src/Editor/Presentation/UnityCliLoopSettingsWindowViewData.cs
💤 Files with no reviewable changes (1)
  • Packages/src/Editor/Infrastructure/SkillSetup/SkillInstallLayoutInternalToolNameProvider.cs

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

2 issues found across 19 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread Packages/src/Editor/Presentation/UIToolkit/Components/ToolSettingsSection.cs Outdated
Comment thread Packages/src/Editor/Presentation/UIToolkit/Components/CliSetupSection.cs Outdated
Fail fast when Tool Settings misses its required info container and share protocol mismatch label formatting between Settings and Setup Wizard to avoid drift.
@hatayama
hatayama merged commit 07b8401 into v3-beta Jun 26, 2026
9 of 10 checks passed
@hatayama
hatayama deleted the feature/improve-tool-settings-ui branch June 26, 2026 12:03
@github-actions github-actions Bot mentioned this pull request Jun 26, 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