bluerobotics / bluerobotics/cockpit

Add `description` field to actions

Open
#2,934 0 comments 0 reactions 1 assignee View on GitHub

@rafaellehmkuhl is already working on this.

Since Aug 12, 2026.

Actions enhancement P2 - Normal Priority ux
Dominant language
TypeScript
Stars
198
Forks
63
Avg merge
2d 7h
Merged PRs (30d)
57

Description

When Cockpit starts and a BlueOS extension offers new actions, the "BlueOS Extension Features" modal lists them by name only. With names like "Trigger camera at 192.168.2.10" and "Trigger all cameras" side by side, it's difficult to tell what each one actually does or which one to pick, and since the modal re-opens on every launch until every item is accepted or ignored, the user is asked to decide something the dialog never explains. Extensions have no way to help: a description on an action in the manifest would help.

Root cause: ActionConfigSchema in src/libs/blueos/schemas.ts (lines 83-89) declares only id, name, type, config and version. Zod objects strip unknown keys by default, so ExtrasJsonSchema.parse(rawData) in src/libs/blueos.ts:77 drops description from every action before getActionsFromBlueOS hands the configs to the UI. Parsing a sample manifest through the shipped schema keeps id, name, type, config and yields action.description === undefined, while the joystick group and suggestion descriptions survive — the two joystick schemas in the same file already declare description: z.string().optional() (lines 99 and 110), which is exactly what the action schema is missing.

The UI side is already built and merely starved: src/components/ExternalFeaturesDiscoveryModal.vue renders getActionDescription(action) on each new-action card (lines 53-55), so the field would display as soon as it survives parsing. That render path is unreachable today, and two things keep the compiler quiet about it — ActionConfig (src/types/cockpit-actions.ts, lines 127-149) has no description member, and getActionDescription reads it through an (action as any).description cast (lines 1224-1227), so yarn typecheck never flags the mismatch.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.