diff --git a/README.md b/README.md index c6e7333..2d9cd0f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > Manage and observe Apache Kafka clusters from a single Go binary — topics, messages, consumer groups, schemas and ACLs in one web UI. -**Status:** Pre-alpha (v0.0.x). APIs and on-disk formats may change without notice. +**Status:** Stable — v1.0, in production use. kafkito is a free, open-source web UI for managing and observing Apache Kafka clusters — built in Go as a single binary, with a modern React frontend, Apache 2.0. It's an independent rewrite inspired by [`provectus/kafka-ui`](https://github.com/provectus/kafka-ui) (unmaintained since 2024); for a community-maintained continuation of the original Java codebase, see [`kafbat/kafka-ui`](https://github.com/kafbat/kafka-ui). diff --git a/frontend/src/components/whats-new-button.test.tsx b/frontend/src/components/whats-new-button.test.tsx index 28a42c4..a0230b9 100644 --- a/frontend/src/components/whats-new-button.test.tsx +++ b/frontend/src/components/whats-new-button.test.tsx @@ -23,7 +23,7 @@ describe("WhatsNewButton", () => { beforeEach(() => { window.localStorage.clear(); fetchInfo.mockReset(); - fetchInfo.mockResolvedValue({ name: "kafkito", version: "0.0.0-rc17-btp" }); + fetchInfo.mockResolvedValue({ name: "kafkito", version: "1.0.0-btp" }); }); it("auto-opens once for an unseen version and marks it seen", async () => { @@ -31,13 +31,13 @@ describe("WhatsNewButton", () => { expect(await screen.findByText("What's new")).toBeInTheDocument(); await waitFor(() => expect(window.localStorage.getItem("kafkito.whatsnew.lastSeen.v1")).toBe( - "0.0.0-rc17", + "1.0.0", ), ); }); it("does not auto-open and shows no dot once the version is seen", async () => { - window.localStorage.setItem("kafkito.whatsnew.lastSeen.v1", "0.0.0-rc17"); + window.localStorage.setItem("kafkito.whatsnew.lastSeen.v1", "1.0.0"); renderButton(); await screen.findByRole("button", { name: /what's new/i }); expect(screen.queryByText("What's new")).not.toBeInTheDocument(); @@ -51,7 +51,7 @@ describe("WhatsNewButton", () => { }); it("opens on click", async () => { - window.localStorage.setItem("kafkito.whatsnew.lastSeen.v1", "0.0.0-rc17"); + window.localStorage.setItem("kafkito.whatsnew.lastSeen.v1", "1.0.0"); const user = userEvent.setup(); renderButton(); await user.click(screen.getByRole("button", { name: /what's new/i })); diff --git a/frontend/src/components/whats-new-modal.test.tsx b/frontend/src/components/whats-new-modal.test.tsx index dfcce54..9e31385 100644 --- a/frontend/src/components/whats-new-modal.test.tsx +++ b/frontend/src/components/whats-new-modal.test.tsx @@ -4,7 +4,7 @@ import { WhatsNewModal } from "./whats-new-modal"; describe("WhatsNewModal", () => { it("renders the title and the latest entry's items with type badges", () => { - render(); + render(); expect(screen.getByText("What's new")).toBeInTheDocument(); expect( screen.getByText(/create consumer groups bound to a topic/i), diff --git a/frontend/src/components/whats-new-modal.tsx b/frontend/src/components/whats-new-modal.tsx index b7e8c82..7b551c3 100644 --- a/frontend/src/components/whats-new-modal.tsx +++ b/frontend/src/components/whats-new-modal.tsx @@ -38,22 +38,22 @@ function EntryBlock({ {entry.date} {open && ( -