Skip to content

feat(code): open footer pickers with ctrl+click - #5611

Merged
Mason Daugherty (mdrxy) merged 5 commits into
mainfrom
mdrxy/code/clickable-footer-model-effort
Aug 18, 2026
Merged

feat(code): open footer pickers with ctrl+click#5611
Mason Daugherty (mdrxy) merged 5 commits into
mainfrom
mdrxy/code/clickable-footer-model-effort

Conversation

@mdrxy

@mdrxy Mason Daugherty (mdrxy) commented Aug 18, 2026

Copy link
Copy Markdown
Member

Model and reasoning-effort labels in the footer can now open their existing pickers with Ctrl+click.


The modifier guard prevents ordinary footer clicks from opening a modal. Ctrl-modified pointer movement underlines only the target under the pointer; the hint clears on the next unmodified movement or when the pointer leaves, matching the modifier information terminal mouse events provide. Effort selection enters the existing /effort queue so it cannot overtake pending prompts, and width-aware truncation removes hidden hit targets.

Made by Open SWE

Make the footer model and effort separate click targets that reuse the existing picker flows.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@github-actions github-actions Bot added dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: S 50-199 LOC labels Aug 18, 2026
@mdrxy
Mason Daugherty (mdrxy) marked this pull request as ready for review August 18, 2026 20:35

@open-swe open-swe 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.

✅ Open SWE Review: No issues found

Open SWE reviewed this PR and found no potential bugs to report.

Open in WebView Open SWE trace

@open-swe open-swe 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.

Open SWE Review found 1 potential issue.

Open in WebView Open SWE trace

Comment thread libs/code/deepagents_code/app.py Outdated
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@open-swe open-swe Bot changed the title feat(code): open pickers from footer model and effort feat(code): open footer pickers with Ctrl+click Aug 18, 2026
@github-actions github-actions Bot added size: M 200-499 LOC and removed size: S 50-199 LOC labels Aug 18, 2026
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Address review findings on the status-bar Ctrl+click targets.

Click handling:
- Ignore non-left buttons. Textual synthesizes `Click` for any button, so
  Ctrl+right-click opened a picker.
- Ignore chained clicks. One `Click` arrives per release, so a Ctrl+double-click
  opened two stacked modals, or submitted `/effort` twice.

Model action:
- Route `action_open_model_selector` through `_submit_input("/model")` instead of
  calling `_show_model_selector` directly. The direct call skipped the exiting
  and thread-switch guards and left the startup tip mounted. `/model` is
  `IMMEDIATE_UI`, so the bare form still bypasses the queue.

Types and docs:
- Annotate the `Style.meta` lookup in `_picker_target` so the `PickerTarget`
  return type is checked rather than an unverified claim about `Any`.
- Derive `_PICKER_STYLES` from `PickerTarget` and assert both picker mappings
  stay total, so a new member cannot `KeyError` at render or click time.
- Document the `_PICKER_*` constants, matching the other constants in the file,
  and record why the model and effort actions take different paths.
- Take the effort text in `_clickable_content` instead of a rung flag.
- Rename `modifier_target` to `_ctrl_hint_target`; nothing outside reads it.

Tests:
- Assert the action strings resolve on `DeepAgentsApp`. Textual only logs a
  missing action, so a rename would have made Ctrl+click a silent no-op.
- Cover `event.stop()` with an app-level click counter: a plain click must still
  reach the handler that refocuses the chat input, a picker click must not.
- Read picker metadata from `render_line` rather than `render`, and cover a
  hover moving between the two spans, which repaints only because the hint
  reactive asks it to.
- Cover the remaining truncation rungs, `on_leave`, and the off-target hover.
@github-actions github-actions Bot added size: L 500-999 LOC and removed size: M 200-499 LOC labels Aug 18, 2026
@mdrxy Mason Daugherty (mdrxy) changed the title feat(code): open footer pickers with Ctrl+click feat(code): open footer pickers with ctrl+click Aug 18, 2026
@mdrxy
Mason Daugherty (mdrxy) merged commit ee339fb into main Aug 18, 2026
53 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the mdrxy/code/clickable-footer-model-effort branch August 18, 2026 22:08
Mason Daugherty (mdrxy) pushed a commit that referenced this pull request Aug 19, 2026
> [!CAUTION]
> Merging this PR will automatically publish to **PyPI** and create a
**GitHub release**.

For the full release process, see
[`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md).

---

_Release notes preview: keep this section in sync with the package
`CHANGELOG.md`. Publish reads the merged CHANGELOG via `release.yml`,
not this PR description — keep them aligned anyway so the PR stays an
accurate historical record for reviewers and anyone returning later._

---


##
[0.1.58](deepagents-code==0.1.57...deepagents-code==0.1.58)
(2026-08-19)

### Breaking Changes

- `deepagents-code` now requires Python 3.12 or newer.
([#5603](#5603))

### Features

- Added OpenRouter `z-ai/glm-5.3` to the model switcher.
([#5641](#5641))
- Added support for re-authenticating MCP servers from the viewer.
([#5637](#5637))
- Footer pickers can now be opened with `ctrl+click`.
([#5611](#5611))
- Resume hints now account for `TERM_PROGRAM` support before showing
terminal-specific guidance.
([#5580](#5580))

### Fixes

- Completed the `dcode config` command surface.
([#5581](#5581))
- Made `/offload` interruptible.
([#5590](#5590))
- Improved chat and footer UI behavior: rapid typing stays visible,
double-click collapses a resized chat input, and the MCP footer wraps on
narrow windows.
([#5424](#5424),
[#5578](#5578),
[#5651](#5651))
- Captured stdio MCP server stderr in the logger.
([#5610](#5610))
- Drained hook pipes after timeout.
([#5606](#5606))
- Grouped resume trace rounds.
([#5593](#5593))
- Omitted web-search prompt guidance when web search is unavailable.
([#5602](#5602))
- Resolved message pointer shapes per cell.
([#5592](#5592))

_End release notes preview._

---

> [!NOTE]
> A **community contributors** list and a **Special thanks** section
(crediting the users who filed the issues this release's PRs closed) are
appended to the GitHub release notes automatically at publish time (see
[Release
Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline),
step 3).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: langchain-oss-automated-triage[bot] <248757908+langchain-oss-automated-triage[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: L 500-999 LOC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant