Skip to content

feat: add operational sidebar control plane - #921

Merged
blove merged 35 commits into
mainfrom
blove/operational-control-plane
Sep 1, 2026
Merged

feat: add operational sidebar control plane#921
blove merged 35 commits into
mainfrom
blove/operational-control-plane

Conversation

@blove

@blove blove commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • turn the Cockpit sidebar into a rail + context control plane with Runtime, Activity, Settings, and mode handoffs
  • add a shared readiness-aware runtime bridge across all 42 Angular Cockpit capabilities
  • bring the same Runtime handoff model to docs, including truthful library-neutral states and sanitized analytics
  • add responsive, keyboard, forced-colors, reduced-motion, favicon, CI-ordering, and production-smoke coverage

Verification

  • runtime bridge, telemetry, UI, Cockpit, and Website unit suites
  • Cockpit Playwright: 7/7
  • Website Playwright: 58/58
  • runtime/CI policy scripts: 86/86
  • all 42 Angular runtime builds
  • Cockpit and Website production builds
  • Chrome semantic, keyboard, theme, menu, tooltip, and live runtime-handshake audit

Actual VoiceOver was not available for this pass; semantic accessibility, keyboard behavior, forced colors, and reduced motion are covered.

blove added 30 commits August 31, 2026 12:00
…trol-plane

# Conflicts:
#	.github/workflows/ci.yml
#	apps/website/src/components/docs/DocsControlPlane.tsx
blove added 4 commits August 31, 2026 21:11
…trol-plane

# Conflicts:
#	apps/cockpit/src/components/cockpit-shell.spec.tsx
#	apps/cockpit/src/components/cockpit-shell.tsx
…trol-plane

# Conflicts:
#	apps/website/src/components/docs/DocsControlPlane.tsx
#	apps/website/src/components/shared/Nav.tsx
@vercel

vercel Bot commented Sep 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
threadplane Ready Ready Preview Sep 1, 2026 4:39am UTC

Request Review

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@github-actions github-actions 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.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit 4328c5d into main Sep 1, 2026
69 checks passed
blove added a commit that referenced this pull request Sep 1, 2026
#921 added apps/cockpit/e2e/control-plane.spec.ts — 7 Playwright tests over
the operational sidebar: the real Angular handshake without blank or
unresponsive states, operational controls reachable at four viewports, forced
colors preserving control boundaries and keyboard focus, and reduced motion
disabling loader and drawer animation.

Nothing ever ran it. The suite sits behind `nx e2e cockpit`, and the
cockpit-e2e matrix only dispatches caps derived from walking cockpit/** —
apps/cockpit is never a candidate. No other job named the target either:
grepping every workflow for `nx e2e` returns examples-chat-angular,
examples-ag-ui-angular, the cap matrix, and website. So this has been dead
coverage for its whole life.

Verified it actually passes before wiring it up — 7/7 in 24s locally. It goes
in the existing `cockpit` job rather than a new one because it is cheap, it
reuses that job's `npm ci`, the `cockpit` scope already gates the shell, and
required-pr-checks already aggregates the job — so it becomes merge-blocking
with no gate change. The playwright config already sets retries: 2 on CI.

Found while auditing the tags I removed from apps/cockpit in #939.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
blove added a commit that referenced this pull request Sep 2, 2026
#921 added apps/cockpit/e2e/control-plane.spec.ts — 7 Playwright tests over
the operational sidebar: the real Angular handshake without blank or
unresponsive states, operational controls reachable at four viewports, forced
colors preserving control boundaries and keyboard focus, and reduced motion
disabling loader and drawer animation.

Nothing ever ran it. The suite sits behind `nx e2e cockpit`, and the
cockpit-e2e matrix only dispatches caps derived from walking cockpit/** —
apps/cockpit is never a candidate. No other job named the target either:
grepping every workflow for `nx e2e` returns examples-chat-angular,
examples-ag-ui-angular, the cap matrix, and website. So this has been dead
coverage for its whole life.

Verified it actually passes before wiring it up — 7/7 in 24s locally. It goes
in the existing `cockpit` job rather than a new one because it is cheap, it
reuses that job's `npm ci`, the `cockpit` scope already gates the shell, and
required-pr-checks already aggregates the job — so it becomes merge-blocking
with no gate change. The playwright config already sets retries: 2 on CI.

Found while auditing the tags I removed from apps/cockpit in #939.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
blove added a commit that referenced this pull request Sep 2, 2026
#921 added apps/cockpit/e2e/control-plane.spec.ts — 7 Playwright tests over
the operational sidebar: the real Angular handshake without blank or
unresponsive states, operational controls reachable at four viewports, forced
colors preserving control boundaries and keyboard focus, and reduced motion
disabling loader and drawer animation.

Nothing ever ran it. The suite sits behind `nx e2e cockpit`, and the
cockpit-e2e matrix only dispatches caps derived from walking cockpit/** —
apps/cockpit is never a candidate. No other job named the target either:
grepping every workflow for `nx e2e` returns examples-chat-angular,
examples-ag-ui-angular, the cap matrix, and website. So this has been dead
coverage for its whole life.

Verified it actually passes before wiring it up — 7/7 in 24s locally. It goes
in the existing `cockpit` job rather than a new one because it is cheap, it
reuses that job's `npm ci`, the `cockpit` scope already gates the shell, and
required-pr-checks already aggregates the job — so it becomes merge-blocking
with no gate change. The playwright config already sets retries: 2 on CI.

Found while auditing the tags I removed from apps/cockpit in #939.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
blove added a commit that referenced this pull request Sep 2, 2026
)

#921 added apps/cockpit/e2e/control-plane.spec.ts — 7 Playwright tests over
the operational sidebar: the real Angular handshake without blank or
unresponsive states, operational controls reachable at four viewports, forced
colors preserving control boundaries and keyboard focus, and reduced motion
disabling loader and drawer animation.

Nothing ever ran it. The suite sits behind `nx e2e cockpit`, and the
cockpit-e2e matrix only dispatches caps derived from walking cockpit/** —
apps/cockpit is never a candidate. No other job named the target either:
grepping every workflow for `nx e2e` returns examples-chat-angular,
examples-ag-ui-angular, the cap matrix, and website. So this has been dead
coverage for its whole life.

Verified it actually passes before wiring it up — 7/7 in 24s locally. It goes
in the existing `cockpit` job rather than a new one because it is cheap, it
reuses that job's `npm ci`, the `cockpit` scope already gates the shell, and
required-pr-checks already aggregates the job — so it becomes merge-blocking
with no gate change. The playwright config already sets retries: 2 on CI.

Found while auditing the tags I removed from apps/cockpit in #939.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

1 participant