Display the single-source version (root package.json) in the web UI's lower-right corner, in grey — matching the CLI and TUI. The browser can't read the filesystem, so the version flows backend → browser via GET /api/config: - Add `version?: string` to InitialConfigPayload; the web backend (webServerConfigToInitialPayload) reads it once via the shared readInspectorVersion() and tags it onto the payload. - Add a `useInspectorVersion` hook mirroring useSandboxUrl/useServerListWritable. - Add a presentational `VersionBadge` element rendered fixed lower-right, grey, non-interactive; styling lives in a `versionBadge` Text theme variant (no inline styles, --inspector-* tokens). - Wire it into App.tsx. Verified live: /api/config serves `version: "2.0.0"` and the badge renders `v2.0.0` fixed at the lower-right in grey. Tests: useInspectorVersion (full branch coverage), VersionBadge (unit + Storybook), web-server-config payload. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BrihGWcrM9JGRyu41nzZYw
22 lines
866 B
TypeScript
22 lines
866 B
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { renderWithMantine, screen } from "../../../test/renderWithMantine";
|
|
import { VersionBadge } from "./VersionBadge";
|
|
|
|
describe("VersionBadge", () => {
|
|
it("renders the version with a `v` prefix and an accessible label", () => {
|
|
renderWithMantine(<VersionBadge version="2.0.0" />);
|
|
const badge = screen.getByText("v2.0.0");
|
|
expect(badge).toBeInTheDocument();
|
|
expect(badge).toHaveAttribute("aria-label", "Inspector version 2.0.0");
|
|
});
|
|
|
|
it("renders nothing when the version is undefined", () => {
|
|
renderWithMantine(<VersionBadge version={undefined} />);
|
|
expect(screen.queryByText(/^v/)).toBeNull();
|
|
});
|
|
|
|
it("renders nothing when the version is an empty string", () => {
|
|
renderWithMantine(<VersionBadge version="" />);
|
|
expect(screen.queryByText(/^v/)).toBeNull();
|
|
});
|
|
});
|