FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

feat(crossview): serve standalone, drop Headlamp plugin, add homepage tile by devantler · Pull Request #2268 · devantler-tech/platform · GitHub

feat(crossview): serve standalone, drop Headlamp plugin, add homepage tile - #2268

Merged
devantler merged 2 commits into
mainfrom
claude/crossview-standalone
Jun 24, 2026
Merged

feat(crossview): serve standalone, drop Headlamp plugin, add homepage tile#2268
devantler merged 2 commits into
mainfrom
claude/crossview-standalone

Conversation

Copy link
Copy Markdown
Contributor

Removes the Headlamp crossview-headlamp plugin and serves Crossview as a standalone, top-level app, surfaced via a Homepage tile in a new Infrastructure as Code group.

Why

The crossview-headlamp plugin embeds https://crossview.platform.devantler.tech in an iframe inside Headlamp. Crossview's "Sign in with OIDC" runs the whole auth flow inside that frame, and it traverses Dex → GitHub. github.com returns x-frame-options: deny on its OAuth/login pages, so the GitHub leg can never render inside the iframe and the sign-in dead-ends. (Even a silent pass-through fails — github.com's session cookie is third-party in the frame and gets blocked by ITP/3p-cookie protection.) This is a browser-security wall, not a config bug: every other platform app authenticates top-level and works.

Fix: stop embedding Crossview. Serve it standalone at crossview.${domain}, where its native Dex OIDC already works exactly like Headlamp / Budget / Vault, and surface it from the Homepage dashboard instead of from inside Headlamp.

Changes

  • Remove the plugin — drop crossview-headlamp from Headlamp's pluginsManager (apps/headlamp/helm-release.yaml).
  • Homepage tile — add gethomepage.dev/* annotations to the Crossview HTTPRoute (group: Infrastructure as Code, icon mdi-graph-outline, app-pod status selector), and add the Infrastructure as Code group to the Homepage layout, positioned between Internal Developer Platform and Kubernetes (apps/homepage/config-map.yaml).
  • Standalone cleanup of the iframe scaffolding in apps/crossview/:
    • Delete ingress.yaml — it existed only so the plugin could resolve the embed URL; removed from kustomization.yaml.
    • httproute.yaml — tighten the framing CSP from frame-ancestors 'self' https://headlamp.${domain} to frame-ancestors 'self' and stop stripping X-Frame-Options (standalone clickjacking protection).
    • networkpolicy.yaml — remove the host/remote-node ingress rule that existed only for the plugin's desktop port-forward; kubelet health probes continue via Cilium's implicit allow-localhost=auto path (same as every other app, e.g. headlamp).
    • Comment updates in helm-release.yaml / httproute.yaml to reflect standalone.

Validation

  • ksail workload validate (local + prod) — 374 files validated, pass.
  • kubectl kustomize k8s/clusters/{local,prod}/ — build clean.

Notes

  • Crossplane isn't in Simple Icons or dashboard-icons, so the tile uses MDI icons (mdi-cube-outline group, mdi-graph-outline for Crossview — it renders the Crossplane resource graph). Easy to swap for a brand SVG later.
  • After this merges and reconciles, sign-in works by visiting crossview.platform.devantler.tech directly (or clicking the Homepage tile).

🤖 Generated with Claude Code

… tile

The crossview-headlamp plugin embeds Crossview in an iframe inside
Headlamp, and Crossview's OIDC sign-in runs the whole flow framed. That
flow traverses Dex -> GitHub, and github.com sends X-Frame-Options: deny,
so the GitHub leg can never render in the frame and sign-in dead-ends.
Serve Crossview standalone (its native Dex OIDC already works top-level,
like every other platform app) and surface it from the Homepage dashboard.

- headlamp: remove the crossview-headlamp plugin from pluginsManager
- homepage: add a Crossview tile in a new "Infrastructure as Code" group,
  placed between Internal Developer Platform and Kubernetes
- crossview: delete the plugin-only ingress.yaml; tighten the framing CSP
  to frame-ancestors 'self' and stop stripping X-Frame-Options; drop the
  host/remote-node netpol rule (kubelet probes use allow-localhost=auto,
  matching every other app)

Validated with `ksail workload validate` (local + prod).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
devantler marked this pull request as ready for review June 24, 2026 18:58
devantler enabled auto-merge June 24, 2026 18:58

Copy link
Copy Markdown
Contributor Author

🤖 Automated CI analysis (Claude Code)

The red 🧪 Validate Manifests check is not this PR's diff — it's a non-deterministic ksail workload validate failure in the CI-pinned ksail 7.77.0 (the race the ci.yaml TRIPWIRE warns about; ksail#5371).

The same build fails at a different location every run, and fails on base main with no crossview diff too:

Run ksail tree result
CI 7.77.0 this PR hetzner/controllers L450 — "mapping values are not allowed"
local 7.77.0 this PR docker/controllers L163 — "could not find expected ':'"
local 7.77.0 base main docker/controllers L145 — "mapping values…"
local 7.77.0 base main docker/controllers L165 + hetzner/controllers L335 (2 failed)
local 7.72.0 this PR ✅ 374 files, both overlays clean

The crossview changes validate clean (ksail 7.72.0) and touch no */controllers group. Re-running the failed checks. The durable fix is the documented TRIPWIRE — re-pin ksail off the renovate auto-bump to a known-good version and reopen ksail#5371 — which I can open as a separate PR.

devantler added this pull request to the merge queue Jun 24, 2026
Merged via the queue into main with commit bbbd37f Jun 24, 2026
10 checks passed
devantler deleted the claude/crossview-standalone branch June 24, 2026 21:55
github-project-automation Bot moved this from 🫴 Ready to ✅ Done in 🌊 Project Board Jun 24, 2026

botantler-1 Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.80.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant


Back | FazBrowse Home | New Git URL