Skip to content

Overridden secrets have no persistent visual indicator in the UI #929

Description

@tomaskir

Is your feature request related to a problem?

When a secret has an active personal override, the UI gives almost no indication of it. The only cue is the Override button's icon turning amber (text-amber-500) - and that button lives in the secret row's action zone, so it's effectively only noticeable on hover. On screens smaller than 2xl there isn't even a text label, just the colored icon.

The indicator is the amber Override button in frontend/components/environments/secrets/OverrideDialog.tsx:

<FaUserEdit className={clsx('shrink-0', activeOverride && 'text-amber-500')} />
<span className={clsx('hidden 2xl:block text-xs', activeOverride && 'text-amber-500')}>
  Override
</span>

There is no row-level badge, no row styling change, no filter, and no count. As a result:

  • You can't tell at a glance which secrets in an environment are overridden.
  • There's no way to filter or count overridden secrets.
  • The override value is never shown inline - you have to open the dialog per-secret to see it.

For a feature whose whole purpose is "you are running a different value than your team," the active state is too easy to miss.

Describe the solution you'd like

Some combination of:

  1. A persistent badge/indicator on overridden secret rows (always visible, not hover-gated).
  2. A filter / toggle to show only overridden secrets in the environment view.
  3. A count of active overrides somewhere in the environment header.
  4. Optionally, an inline hint that the displayed value differs from your personal override.

The data is already available client-side - GetSecrets returns override { value isActive } (frontend/graphql/queries/secrets/getSecrets.gql) and it's decrypted on the environment page. So this is largely a frontend surfacing change; no schema/API work needed for the indicator/filter/count.

Describe alternatives you've considered

Keeping the current amber-on-hover button as the sole indicator. It works once you know to look for it, but it's not discoverable and doesn't scale to "which of these 40 secrets am I overriding?"

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions