From c146e8f75bd1e6cb38db2c079f97f16343a42250 Mon Sep 17 00:00:00 2001 From: shankar0123 Date: Thu, 14 May 2026 18:02:51 +0000 Subject: [PATCH] =?UTF-8?q?fix(web):=20sidebar=20footer=20simplification?= =?UTF-8?q?=20+=20onboarding=20doc=20links=20=E2=80=94=20operator-reported?= =?UTF-8?q?=20drift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two small, operator-reported regressions in the live demo: 1. SIDEBAR FOOTER Pre-fix the bottom-left of the sidebar had: Built and maintained by Shankar <- only "Shankar" linked certctl [⎋] <- "certctl" label + logout Operator dropped the "certctl" label as redundant (the brand mark + product name are already in the sidebar header), and asked for the WHOLE attribution sentence to be the LinkedIn link rather than only "Shankar". Post-fix the entire sidebar footer is one row: Built and maintained by Shankar [⎋] The full sentence is now an ExternalLink to https://www.linkedin.com/in/shankar-k-a1b6853ba. Logout sits flush- right via `flex justify-between` and only renders when authRequired is true (unchanged contract). Same Phase 5 / Hotfix #8 chokepoint (ExternalLink) means the L-015 CI guard stays green — caught my first attempt where the explanatory comment text contained the literal `target="_blank"` string and the line-grep guard fired on the comment itself. Fixed by rephrasing the comment. 2. ONBOARDING WIZARD DOC LINKS The CompleteStep ("You're all set!") screen had three doc links at the bottom — all 404s: Quickstart Guide → docs/quickstart.md (gone) Architecture → docs/architecture.md (gone) Connectors → docs/connectors.md (gone) Root cause: the 2026-05-04 docs overhaul reorganized into the audience-organized tree (`getting-started/`, `reference/`, `operator/`, etc.). The CompleteStep links weren't updated. Every operator who completed the wizard hit three 404s. Verified against the live repo BEFORE writing the new links — the exact paths that exist today: docs/getting-started/quickstart.md docs/reference/architecture.md docs/reference/connectors/index.md (29 per-connector .md siblings) New links point at those paths. Each still uses target="_blank" + rel="noopener noreferrer" on the same line so the L-015 guard passes. Verification: • npx tsc --noEmit — exits 0 • Layout 7/7 + OnboardingWizard 4/4 = 11/11 green • All 34 CI guards pass (L-015 included) • npx vite build ✓ in 3.30s --- web/src/components/Layout.tsx | 52 ++++++++++------------- web/src/pages/onboarding/CompleteStep.tsx | 13 ++++-- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/web/src/components/Layout.tsx b/web/src/components/Layout.tsx index be33975..857c960 100644 --- a/web/src/components/Layout.tsx +++ b/web/src/components/Layout.tsx @@ -284,38 +284,32 @@ export default function Layout() { - {/* Maintainer attribution row — mirrors the landing-page footer - (certctl.io: "Built and maintained by Shankar · certctl.io"). - Same font-mono / muted-text typography; only "Shankar" carries - the LinkedIn link (the same href + rel="me noopener" pattern - the landing page uses). Single-maintainer OSS standard - (Cal.com, Plausible, Beekeeper Studio do the same). */} - {/* Maintainer attribution row. The Bundle-8 L-015 CI guard line-greps - for `target="_blank"` without `rel="noopener noreferrer"` on the - SAME LINE — splitting target + rel across lines (as the prior - bare did) tripped the guard. ExternalLink is the canonical - chokepoint that the guard allowlists. We lose the rel="me" hint - (LinkedIn's identity-claim signal, not load-bearing), but gain - the CI gate. */} -
- - Built and maintained by{' '} - - Shankar - - -
- -
- certctl + {/* Sidebar footer (post-2026-05-14 simplification per operator). + Pre-fix the footer had two rows: the maintainer attribution + (with only "Shankar" linked) PLUS a "certctl" font-mono label + sitting next to the logout button. Operator dropped the + "certctl" label as redundant (the brand mark + product name + are already in the sidebar header), so this single row is + the entire footer: + • Whole "Built and maintained by Shankar" line is the + LinkedIn link — routes through ExternalLink so the + rel="noopener noreferrer" pair is auto-emitted on the + same line + the Bundle-8 L-015 CI guard stays green. + • Logout sits flush-right on the same row, separated + visually by justify-between flex layout. Only renders + when authRequired is true. */} +
+ + Built and maintained by Shankar + {authRequired && ( + {/* Doc links updated 2026-05-14 to match the post-2026-05-04 + audience-organized doc tree (getting-started/ + reference/). + Pre-fix the three links pointed at docs/quickstart.md, + docs/architecture.md, docs/connectors.md — none of those paths + exist any more; they were 404s the operator hit on every + successful onboarding completion. Verified against `ls docs/` + before writing. */}
- Quickstart Guide - Architecture - Connectors + Quickstart Guide + Architecture + Connectors
);