Skip to content

Fixed choice menu not recognizing Ultraplan "Tell Claude what to change" as text input - #90

Merged
oleg68 merged 1 commit into
nbplugins:mainfrom
oleg68:feature/ultraplan-tell-claude-text-input
Apr 25, 2026
Merged

oleg68 merged 1 commit into
nbplugins:mainfrom
oleg68:feature/ultraplan-tell-claude-text-input

Conversation

@oleg68

@oleg68 oleg68 commented Apr 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • The Ultraplan plan-review menu shows option 4 as "Tell Claude what to change" with a sub-line "shift+tab to approve with this feedback". The plugin was rendering this as a plain radio button instead of a text input field.
  • Root cause: isTypeInputOption only checked for display text starting with "type"; isHintLine didn't recognize "shift+tab" lines, so they were stored as the option's description rather than triggering hasTextInput detection.
  • Fixed by adding hasTextInput field to ChoiceMenuModel.Option (mirroring the existing hasCheckbox pattern), detecting "shift+tab to approve" hint lines in ScreenContentDetector, and extending isTypeInputOption to also check opt.hasTextInput().
  • Python PTY investigation (claude-launch-tests/test_ultraplan_tell_claude.py) confirmed the existing TYPE:N:text mechanism (digit + text + \r) works correctly for this option.

Test plan

  • Unit test fixture ultraplan-tell-claude added; ScreenContentDetectorTest passes (70 tests)
  • mvn package passes
  • In NetBeans: start a session with --permission-mode plan, trigger the Ultraplan plan-review menu, verify option 4 renders with a text field, type feedback, click Send, confirm Claude receives and re-plans

🤖 Generated with Claude Code

…ge" as text input

The Ultraplan plan-review menu option "Tell Claude what to change" was rendered
as a plain radio button instead of a text input field. The "shift+tab to approve
with this feedback" sub-line was incorrectly stored as the option's description
rather than being treated as a hint that marks the option as hasTextInput.

Fixes:
- ScreenContentDetector: added "shift+tab" to isHintLine; when a "shift+tab to
  approve" line is detected below an option, sets hasTextInput=true on that option
- ChoiceMenuModel.Option: added hasTextInput field (mirrors existing hasCheckbox pattern)
- ChoiceMenuPanel.isTypeInputOption: also returns true for opt.hasTextInput()

Python investigation confirmed that the existing TYPE:N:text mechanism (digit +
text + \r) works correctly for this option.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@oleg68
oleg68 merged commit 88abf5f into nbplugins:main Apr 25, 2026
3 checks passed
@oleg68
oleg68 deleted the feature/ultraplan-tell-claude-text-input branch April 25, 2026 06:23
oleg68 added a commit that referenced this pull request Apr 25, 2026
…ge" as text input (#91)

Backport of #90 to release/0.21.

## Summary

- The Ultraplan plan-review menu option "Tell Claude what to change" was
rendered as a plain radio button instead of a text input field
- Fixed by adding `hasTextInput` field to `ChoiceMenuModel.Option`,
detecting "shift+tab to approve" hint lines in `ScreenContentDetector`,
and extending `isTypeInputOption` in `ChoiceMenuPanel`

## Test plan

- [ ] `ScreenContentDetectorTest` passes (70 tests)
- [ ] `mvn package` passes
- [ ] In NetBeans: trigger Ultraplan plan-review menu, verify option 4
renders with a text field

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Oleg Samarin <osamarin@openintegration.inc>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
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