Skip to content

✨ feat(security): add Security surfaces to install modal and mission detail#8210

Merged
clubanderson merged 1 commit intomainfrom
feat/security-ui-surfaces
Apr 16, 2026
Merged

✨ feat(security): add Security surfaces to install modal and mission detail#8210
clubanderson merged 1 commit intomainfrom
feat/security-ui-surfaces

Conversation

@clubanderson
Copy link
Copy Markdown
Collaborator

Summary

Makes the security picture visible in-context at the two moments users care about — installing the Console itself and installing a CNCF project via a guided mission. Both surfaces link to `docs/security/SECURITY-MODEL.md` (merged in #8203) as the canonical reference.

This is the UI half of task 3 from the session todo — the docs half landed in #8203, the mermaid enhancement is in #8206, the schema side is in kubestellar/console-kb#2027.

What changes

Setup install modal — `SetupInstructionsDialog.tsx`

New expandable Security posture section alongside the existing Dev Guide / K8s Deploy / OAuth sections. Four subsections:

  1. kc-agent runs on your machine, not ours — loopback bind, user kubeconfig RBAC, `KC_AGENT_TOKEN` optional shared secret
  2. AI keys never leave your machine — `~/.kc/config.yaml` mode 0600, browser never holds the keys
  3. What does leave your machine — AI chat history only, cluster secrets not auto-attached, analytics opt-outable
  4. Air-gapped / high-security environments — `GROQ_BASE_URL` / `OPENROUTER_BASE_URL` / `OPEN_WEBUI_URL` overrides for local LLMs

Framed deliberately to not conflate with broader local-LLM support work (tracked separately as Manuela's feedback).

Mission Detail view — `MissionDetailView.tsx`

Adds a 5th tab: `install | uninstall | upgrade | troubleshooting | security`. The tab:

  • Renders `mission.security` steps via the existing `StepCard` component
  • When populated, adds a footer link to the overall `SECURITY-MODEL.md`
  • When empty (most missions today), shows a helpful fallback with the global doc link + a "Suggest security notes" button that reuses the existing `onImprove` flow

Schema — `types.ts`

Adds optional `security?: MissionStep[]` to the `MissionExport` interface. Backwards-compatible.

Locale — `locales/en/common.json`

Adds `missions.detail.tabs.security` and `missions.detail.tabs.securityEmpty` strings.

Paired PRs

Test plan

  • `npm run build` passes locally
  • No TypeScript errors
  • Render check: open SetupInstructionsDialog and verify the new Security section expands/collapses and links resolve
  • Render check: open any mission detail and verify the new Security tab renders; populated missions (install-kubevirt after console-kb#2027 merges) show the 6 bullets, others show the fallback

…detail

Makes the security picture visible in-context at the two moments
users care about — installing the Console itself and installing
a CNCF project via a guided mission. Both surfaces link to the
SECURITY-MODEL.md doc merged in #8203.

Setup install modal (SetupInstructionsDialog.tsx):
- New expandable "Security posture" section next to the Dev
  Guide / K8s Deploy / OAuth sections
- Four subsections covering kc-agent posture, AI key handling,
  what leaves your machine, and the air-gapped / local-LLM
  option (framed as a security posture, not a feature gap —
  deliberately scoped to NOT conflate with the separate broader
  local-LLM support work)
- "Read the full security model" link to docs/security/SECURITY-MODEL.md

Mission Detail view (MissionDetailView.tsx):
- New 5th tab: install / uninstall / upgrade / troubleshooting /
  **security**
- Renders mission.security steps via the existing StepCard
  component
- When mission.security is populated, adds a footer link to the
  overall SECURITY-MODEL.md so users always have a path to the
  full doc
- When mission.security is empty, shows a helpful fallback with
  the global doc link and an "Suggest security notes" button
  (reuses the existing onImprove flow)

Schema (lib/missions/types.ts):
- Adds optional `security?: MissionStep[]` to the MissionExport
  interface. Backwards-compatible.

Locale (locales/en/common.json):
- Adds `missions.detail.tabs.security` and
  `missions.detail.tabs.securityEmpty` strings

Paired with kubestellar/console-kb#2027 which introduces the
schema-side `mission.security` array and populates the first
mission (install-kubevirt).

Signed-off-by: Andrew Anderson <[email protected]>
Copilot AI review requested due to automatic review settings April 15, 2026 19:09
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Apr 15, 2026
@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign mikespreitzer for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 15, 2026

Deploy Preview for kubestellarconsole ready!

Name Link
🔨 Latest commit 6f912d5
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarconsole/deploys/69dfe25dbecff1000838e10a
😎 Deploy Preview https://deploy-preview-8210.console-deploy-preview.kubestellar.io
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@kubestellar-prow kubestellar-prow Bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Apr 15, 2026
@github-actions
Copy link
Copy Markdown
Contributor

👋 Hey @clubanderson — thanks for opening this PR!

🤖 This project is developed exclusively using AI coding assistants.

Please do not attempt to code anything for this project manually.
All contributions should be authored using an AI coding tool such as:

This ensures consistency in code style, architecture patterns, test coverage,
and commit quality across the entire codebase.


This is an automated message.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds in-context “Security” guidance to two key UI surfaces (local install modal and mission detail) and extends the mission schema/i18n to support mission-specific security steps, linking to docs/security/SECURITY-MODEL.md as the canonical reference.

Changes:

  • Adds an expandable “Security posture” section to SetupInstructionsDialog with a link to the security model doc.
  • Adds a new “Security” tab to MissionDetailView that renders mission.security steps or a fallback CTA when empty.
  • Extends MissionExport with optional security?: MissionStep[] and adds the required EN locale strings.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
web/src/components/setup/SetupInstructionsDialog.tsx Adds an expandable “Security posture” guide with a doc link in the install modal.
web/src/components/missions/MissionDetailView.tsx Adds a “Security” tab rendering mission.security steps plus doc link + fallback CTA.
web/src/lib/missions/types.ts Extends MissionExport with optional security steps.
web/src/locales/en/common.json Adds i18n strings for the new Security tab and empty state.

Comment on lines +241 to +243
<code className="font-mono text-foreground/70">0600</code>. The browser never holds the
keys; kc-agent calls the provider directly. No API key reaches the console's servers or
the hosted demo at console.kubestellar.io.
Comment on lines +228 to +230
kc-agent binds <code className="font-mono text-foreground/70">127.0.0.1:8585</code> only
(hardcoded loopback, not configurable). It reads{' '}
<code className="font-mono text-foreground/70">~/.kube/config</code> and executes every
@clubanderson clubanderson merged commit 016d827 into main Apr 16, 2026
59 of 60 checks passed
@kubestellar-prow kubestellar-prow Bot deleted the feat/security-ui-surfaces branch April 16, 2026 11:26
@github-actions
Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

Check out what's new:

Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey

clubanderson added a commit that referenced this pull request Apr 16, 2026
…odel links

Follow-up to #8210 which added the Security posture section to the
install modal and a Security tab to the mission detail view. The
original PR linked to the source-grounded repo version of
SECURITY-MODEL.md — functional but less user-friendly than the
rendered docs site, and missed the AI threat model entirely.

Changes:

SetupInstructionsDialog.tsx (Run KubeStellar Console Locally modal):
- Primary security link now points at
  https://kubestellar.io/docs/console/main/console/security-model/
  (rendered docs site, main version).
- Added AI automation threat model link (SECURITY-AI.md from #8249)
  to surface prompt-injection / supply-chain / agent-drift concerns.
- Kept the repo version as a secondary "source-grounded" link with
  smaller muted styling — useful for readers who want the exact
  file/line claims SECURITY-MODEL.md makes.

MissionDetailView.tsx (mission security tab):
- Same docs.kubestellar.io primary URL swap.
- Added AI threat model link both to the populated-tab footer and
  the empty-state fallback.

Three new URL constants replace the single hardcoded GH link:
  SECURITY_DOC_URL        = docs.kubestellar.io (primary)
  SECURITY_DOC_REPO_URL   = github.com/.../SECURITY-MODEL.md (secondary)
  SECURITY_AI_DOC_URL     = github.com/.../SECURITY-AI.md

Signed-off-by: Andrew Anderson <[email protected]>
@github-actions
Copy link
Copy Markdown
Contributor

Post-merge build verification passed

Both Go and frontend builds compiled successfully against merge commit 016d827d089496c8bcc5e13b5c03772d8e706eb8.

@github-actions
Copy link
Copy Markdown
Contributor

✅ Post-Merge Verification: passed

Commit: 016d827d089496c8bcc5e13b5c03772d8e706eb8
Specs run: Missions.spec.ts mission-import.spec.ts smoke.spec.ts
Report: https://github.com/kubestellar/console/actions/runs/24507644772

clubanderson added a commit that referenced this pull request Apr 16, 2026
…odel links (#8348)

Follow-up to #8210 which added the Security posture section to the
install modal and a Security tab to the mission detail view. The
original PR linked to the source-grounded repo version of
SECURITY-MODEL.md — functional but less user-friendly than the
rendered docs site, and missed the AI threat model entirely.

Changes:

SetupInstructionsDialog.tsx (Run KubeStellar Console Locally modal):
- Primary security link now points at
  https://kubestellar.io/docs/console/main/console/security-model/
  (rendered docs site, main version).
- Added AI automation threat model link (SECURITY-AI.md from #8249)
  to surface prompt-injection / supply-chain / agent-drift concerns.
- Kept the repo version as a secondary "source-grounded" link with
  smaller muted styling — useful for readers who want the exact
  file/line claims SECURITY-MODEL.md makes.

MissionDetailView.tsx (mission security tab):
- Same docs.kubestellar.io primary URL swap.
- Added AI threat model link both to the populated-tab footer and
  the empty-state fallback.

Three new URL constants replace the single hardcoded GH link:
  SECURITY_DOC_URL        = docs.kubestellar.io (primary)
  SECURITY_DOC_REPO_URL   = github.com/.../SECURITY-MODEL.md (secondary)
  SECURITY_AI_DOC_URL     = github.com/.../SECURITY-AI.md

Signed-off-by: Andrew Anderson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates the PR's author has signed the DCO. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants