@cosmicdrift/kumiko-renderer 0.269.0 → 0.269.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-renderer",
3
- "version": "0.269.0",
3
+ "version": "0.269.1",
4
4
  "description": "Platform-agnostic React renderer for Kumiko screens. Contains the shared logic — primitives-contract, hooks, KumikoScreen, navigation & SSE abstractions — that any platform-specific renderer (web, native) composes. No DOM, no EventSource, no react-dom.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -15,8 +15,8 @@
15
15
  }
16
16
  },
17
17
  "dependencies": {
18
- "@cosmicdrift/kumiko-framework": "0.269.0",
19
- "@cosmicdrift/kumiko-headless": "0.269.0",
18
+ "@cosmicdrift/kumiko-framework": "0.269.1",
19
+ "@cosmicdrift/kumiko-headless": "0.269.1",
20
20
  "react": "^19.2.6",
21
21
  "temporal-polyfill": "^0.3.2",
22
22
  "zod": "^4.4.3"
@@ -27,7 +27,7 @@
27
27
  "@types/react-dom": "^19.2.3",
28
28
  "jsdom": "^29.1.1",
29
29
  "react-dom": "^19.2.6",
30
- "@cosmicdrift/kumiko-locale-de": "0.269.0"
30
+ "@cosmicdrift/kumiko-locale-de": "0.269.1"
31
31
  },
32
32
  "repository": {
33
33
  "type": "git",
@@ -337,6 +337,16 @@ describe("SecretMintBody confirm step (fw#2838)", () => {
337
337
  },
338
338
  };
339
339
 
340
+ // The confirm form mounts from an async post-mint update, so its form-store subscription can
341
+ // still be pending when the change fires — clicking before that subscription re-renders hits a disabled submit.
342
+ async function enterConfirmCodeAndSubmit(code: string): Promise<void> {
343
+ fireEvent.change(rtlScreen.getByLabelText(/code/i), { target: { value: code } });
344
+ await waitFor(() =>
345
+ expect(rtlScreen.getByTestId<HTMLButtonElement>("render-edit-submit").disabled).toBe(false),
346
+ );
347
+ fireEvent.click(rtlScreen.getByTestId("render-edit-submit"));
348
+ }
349
+
340
350
  test("renders the confirm form instead of the acknowledge button, and submits the confirm form's own values merged with the carried mint-payload field", async () => {
341
351
  const { dispatcher, writeCalls } = stubMultiWriteDispatcher({
342
352
  "shop:write:token:mint": { token: "kpat_secret", id: "x", setupToken: "stok_123" },
@@ -351,8 +361,7 @@ describe("SecretMintBody confirm step (fw#2838)", () => {
351
361
  // No bare acknowledge button — the confirm form takes its place.
352
362
  expect(rtlScreen.queryByTestId("kumiko-screen-secret-mint-confirm")).toBeNull();
353
363
 
354
- fireEvent.change(rtlScreen.getByLabelText(/code/i), { target: { value: "123456" } });
355
- fireEvent.click(rtlScreen.getByTestId("render-edit-submit"));
364
+ await enterConfirmCodeAndSubmit("123456");
356
365
 
357
366
  await waitFor(() =>
358
367
  expect(writeCalls.some((c) => c.command === "shop:write:token:confirm")).toBe(true),
@@ -385,8 +394,7 @@ describe("SecretMintBody confirm step (fw#2838)", () => {
385
394
  fireEvent.click(rtlScreen.getByTestId("render-edit-submit"));
386
395
  await waitFor(() => expect(rtlScreen.queryByText("kpat_secret")).not.toBeNull());
387
396
 
388
- fireEvent.change(rtlScreen.getByLabelText(/code/i), { target: { value: "123456" } });
389
- fireEvent.click(rtlScreen.getByTestId("render-edit-submit"));
397
+ await enterConfirmCodeAndSubmit("123456");
390
398
 
391
399
  await waitFor(() =>
392
400
  expect(rtlScreen.queryByTestId("kumiko-screen-secret-mint-done")).not.toBeNull(),