Skip to content

feat(web): cockpit robot picker - #3951

Open
paul-nechifor wants to merge 1 commit into
paul/feat/t12a-relay-url-discoveryfrom
paul/feat/t12b-robot-picker
Open

feat(web): cockpit robot picker#3951
paul-nechifor wants to merge 1 commit into
paul/feat/t12a-relay-url-discoveryfrom
paul/feat/t12b-robot-picker

Conversation

@paul-nechifor

@paul-nechifor paul-nechifor commented Sep 5, 2026

Copy link
Copy Markdown
Contributor
  • Adds a robot picker to the web cockpit when multiple robots share a relay. Users can choose which robot to view from a list showing their names, models, and IDs.
  • Displays the selected robot's own panels and page tabs, so robots with different cockpit layouts can share the same relay.
  • Adds a "switch robot" button to the status bar. It reopens the list and highlights the current selection.

@greptile-apps

greptile-apps Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Summary

  • Adds a cockpit workflow for selecting among multiple registered robots and reopening that selection from the status bar.
  • Updates cockpit rendering to follow the selected robot’s manifest, panels, and pages.
  • Adds test and documentation coverage for the multi-robot workflow.

Merge Safety

Do not merge yet: the outstanding robot-selection issue can leave an available robot inaccessible until the operator reloads the cockpit. The narrow-screen control clipping remains a non-blocking usability concern.

Confidence Score: 4/5

Not safe to merge because an available remaining robot can become inaccessible without reloading the cockpit.

The outstanding blocking robot-selection thread remains valid. When the selected robot disconnects and exactly one robot remains, the current code sets hasMultipleRobots to false and closes the picker. showPicker consequently remains false while watchedRobot is null, and onSwitchRobot is also null. The cockpit shows the waiting state rather than allowing the operator to select the remaining robot. The outstanding narrow-viewport thread also remains valid: the fixed-height, overflow-hidden status bar can clip the non-shrinking switch button outside the visible area at 320px.

Reviews (2): Last reviewed commit: "feat(web): cockpit robot picker" | Re-trigger Greptile

Comment thread web/cockpit/src/App.tsx
Comment thread web/cockpit/src/ui/StatusBar.module.css
@paul-nechifor
paul-nechifor marked this pull request as draft September 5, 2026 23:08
@codecov

codecov Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 18.36735% with 40 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/e2e_tests/test_robot_picker_browser.py 18.36% 40 Missing ⚠️
@@                          Coverage Diff                           @@
##           paul/feat/t12a-relay-url-discovery    #3951      +/-   ##
======================================================================
- Coverage                               78.22%   78.20%   -0.03%     
======================================================================
  Files                                    1416     1417       +1     
  Lines                                  133807   133856      +49     
  Branches                                11577    11577              
======================================================================
+ Hits                                   104668   104679      +11     
- Misses                                  25934    25972      +38     
  Partials                                 3205     3205              
Components Coverage Δ
Tests 94.55% <18.36%> (-0.08%) ⬇️
Flag Coverage Δ
OS-ubuntu-24.04-arm 74.41% <18.36%> (-0.02%) ⬇️
OS-ubuntu-latest 74.98% <18.36%> (-0.03%) ⬇️
Py-3.10 74.97% <18.36%> (-0.03%) ⬇️
Py-3.11 74.97% <18.36%> (-0.03%) ⬇️
Py-3.12 74.98% <18.36%> (-0.02%) ⬇️
Py-3.13 74.98% <18.36%> (-0.03%) ⬇️
Py-3.14 74.98% <18.36%> (-0.03%) ⬇️
Py-3.14t 74.98% <18.36%> (-0.03%) ⬇️
SelfHosted-Linux 35.62% <18.36%> (-0.11%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/e2e_tests/test_robot_picker_browser.py 18.36% <18.36%> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@leshy
leshy force-pushed the paul/feat/t12b-robot-picker branch from b010b09 to e285076 Compare September 6, 2026 07:59
@paul-nechifor
paul-nechifor marked this pull request as ready for review September 8, 2026 00:59
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Sep 8, 2026
With several robots on one relay the cockpit lists them (name, model, id,
sorted by name) and the operator picks one; the pick pins the session's
watch. The status bar names the watched robot and offers "switch robot"
whenever another robot is registered, which also covers a pinned robot
that left while a different one stays (the SDK never unpins, so the lone
survivor is not auto-watched). Exactly one robot is unchanged: no picker.

Browser e2e: two dataless cockpit modules attached to a hand-started relay
through relay_url; the page lists both, renders the picked robot's panels,
and switches from the status bar.
@paul-nechifor
paul-nechifor force-pushed the paul/feat/t12b-robot-picker branch from e285076 to 230fd36 Compare September 8, 2026 23:31
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Sep 8, 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.

2 participants