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(