diff --git a/CHANGELOG.d/2.4.0-land-ask-under-next-action.md b/CHANGELOG.d/2.4.0-land-ask-under-next-action.md new file mode 100644 index 000000000..b1b1f6d7b --- /dev/null +++ b/CHANGELOG.d/2.4.0-land-ask-under-next-action.md @@ -0,0 +1,5 @@ +# 2.4.0 Land Ask under the next action + +Open Public post from the landed Demo Corp members and Ask about this +lineage sits under the Ask next action, ahead of Affiliate tree. Home +list opens keep Ask at the bottom. diff --git a/CHANGELOG.md b/CHANGELOG.md index d5268ae32..9427e849c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ 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). +## [2.4.0] - 2026-08-17 + +### Added + +- Opening Public post from the landed Demo Corp members now puts Ask + about this lineage immediately under the Ask next action, ahead of + Affiliate tree. Home list opens keep Ask after Keyman. No TEPP theta + is invented. No cutoff body is invented (ADR 0016). + ## [2.3.0] - 2026-08-17 ### Added diff --git a/CLAUDE.md b/CLAUDE.md index bbe596a7e..e3c68fe9b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -58,6 +58,7 @@ evaluation, the popup names the first Keyman as the next read. After landed Ada West related, the popup names the first related node as the next read. After that next action, the popup lands Priya Nair related nodes. After those related nodes land, the popup names Ask -about this lineage as the next read. Changing the week first still +about this lineage as the next read. After that next action, the +popup lands Ask about this lineage. Changing the week first still focuses the report period field. Mean θ stays on the period-report panel. diff --git a/frontend/package.json b/frontend/package.json index c69ccd443..49a7db4f0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "2.3.0", + "version": "2.4.0", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx index b5fb24455..b9ea8ab7e 100644 --- a/frontend/src/App.test.tsx +++ b/frontend/src/App.test.tsx @@ -1504,6 +1504,8 @@ describe("App, authenticated", () => { 0, ); expect(affiliate.compareDocumentPosition(keyman) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); + const ask = within(popup as HTMLElement).getByRole("heading", { name: "Ask about this lineage" }); + expect(keyman.compareDocumentPosition(ask) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); }); it("shows a seeded Ask exchange without an orchestrator round-trip", async () => { @@ -2379,6 +2381,9 @@ describe("App, authenticated", () => { expect(askNext.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe( 0, ); + const ask = within(popup as HTMLElement).getByRole("heading", { name: "Ask about this lineage" }); + expect(askNext.compareDocumentPosition(ask) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); + expect(ask.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); await waitFor(() => expect(document.getElementById("post-ask")).toHaveFocus()); } finally { HTMLElement.prototype.scrollIntoView = originalScrollIntoView; @@ -2657,6 +2662,13 @@ describe("App, authenticated", () => { expect(await screen.findByRole("status", { name: "Ask next action" })).toHaveTextContent( "Related nodes for Priya Nair are current. Ask about this lineage next.", ); + const popup = document.querySelector(".popup-panel"); + expect(popup).not.toBeNull(); + const ask = within(popup as HTMLElement).getByRole("heading", { name: "Ask about this lineage" }); + const affiliate = within(popup as HTMLElement).getByRole("heading", { name: "Affiliate tree" }); + const askNext = screen.getByRole("status", { name: "Ask next action" }); + expect(askNext.compareDocumentPosition(ask) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); + expect(ask.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe(0); await waitFor(() => expect(document.getElementById("post-ask")).toHaveFocus()); }); diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index f2bc19098..736e84a0d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -930,6 +930,9 @@ function KeymanPanel({ {relatedNodesCurrentNextAction(landedRelatedName)}
) : null} + {afterList && landFirstRelated && landedRelatedName && landedRelated !== null ? ( +