diff --git a/CHANGELOG.d/1.6.0-land-keyman-eval-under-next-action.md b/CHANGELOG.d/1.6.0-land-keyman-eval-under-next-action.md new file mode 100644 index 000000000..e7115e36e --- /dev/null +++ b/CHANGELOG.d/1.6.0-land-keyman-eval-under-next-action.md @@ -0,0 +1,5 @@ +# 1.6.0 Land Keyman and evaluation under the Event Lineage next action + +Open Public post from the landed Demo Corp members and Keyman plus +evaluation sit under the Event Lineage next action, ahead of Affiliate +tree. Home list opens keep the earlier order. diff --git a/CHANGELOG.md b/CHANGELOG.md index 8860a5b58..33f8e1dee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.6.0] - 2026-08-17 + +### Added + +- Opening Public post from the landed Demo Corp members now puts + Keyman and evaluation immediately under the Event Lineage next + action, ahead of Affiliate tree. Home list opens keep evaluation + above Event Lineage. No TEPP theta is invented. No cutoff body is + invented (ADR 0016). + ## [1.5.0] - 2026-08-17 ### Added diff --git a/frontend/package.json b/frontend/package.json index 8bc2c48e2..7d93d7543 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "1.5.0", + "version": "1.6.0", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx index 3aa56e4d3..a4139577c 100644 --- a/frontend/src/App.test.tsx +++ b/frontend/src/App.test.tsx @@ -1474,6 +1474,18 @@ describe("App, authenticated", () => { expect( screen.queryByRole("status", { name: "Event Lineage next action" }), ).not.toBeInTheDocument(); + const popup = document.querySelector(".popup-panel"); + expect(popup).not.toBeNull(); + const evaluation = within(popup as HTMLElement).getByRole("heading", { + name: "Post quality (IRT)", + }); + const eventLineage = within(popup as HTMLElement).getByRole("heading", { name: "Event Lineage" }); + const affiliate = within(popup as HTMLElement).getByRole("heading", { name: "Affiliate tree" }); + const keyman = within(popup as HTMLElement).getByRole("heading", { name: "Keyman" }); + expect(evaluation.compareDocumentPosition(eventLineage) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe( + 0, + ); + expect(affiliate.compareDocumentPosition(keyman) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); }); it("shows a seeded Ask exchange without an orchestrator round-trip", async () => { @@ -2290,10 +2302,17 @@ describe("App, authenticated", () => { expect( currentNode.compareDocumentPosition(lineageNext) & Node.DOCUMENT_POSITION_FOLLOWING, ).not.toBe(0); + const keyman = within(popup as HTMLElement).getByRole("heading", { name: "Keyman" }); + const evaluation = within(popup as HTMLElement).getByRole("heading", { + name: "Post quality (IRT)", + }); + const affiliate = within(popup as HTMLElement).getByRole("heading", { name: "Affiliate tree" }); + expect(lineageNext.compareDocumentPosition(keyman) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe( + 0, + ); + expect(keyman.compareDocumentPosition(evaluation) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); expect( - lineageNext.compareDocumentPosition( - within(popup as HTMLElement).getByRole("heading", { name: "Keyman" }), - ) & Node.DOCUMENT_POSITION_FOLLOWING, + evaluation.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING, ).not.toBe(0); } finally { HTMLElement.prototype.scrollIntoView = originalScrollIntoView; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d0de5ce18..57f3a2038 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1375,13 +1375,15 @@ function PostDetailPopup({ )} - setEvaluation(rows)} - /> + {!focusEventLineage && ( + setEvaluation(rows)} + /> + )} + {focusEventLineage && ( + <> + + setEvaluation(rows)} + /> + + )} +

Affiliate tree

{affiliateTrees === null ? ( @@ -1436,17 +1461,19 @@ function PostDetailPopup({ )}
- + {!focusEventLineage && ( + + )} {counterparties && counterparties.length > 0 && (