From 86fd79d50b79a99e5c47d26670bba430eafabe83 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 17 Aug 2026 18:52:18 +0900 Subject: [PATCH] feat: name Ask after Priya Nair related nodes are current (v2.2.0) Opening Public post from landed Demo Corp members now names related nodes for Priya Nair as current and points at Ask about this lineage. Home list opens do not add that copy. No TEPP theta. No invented cutoff body. --- CHANGELOG.d/2.2.0-name-ask-after-priya-related.md | 4 ++++ CHANGELOG.md | 9 +++++++++ CLAUDE.md | 6 ++++-- frontend/package.json | 2 +- frontend/src/App.test.tsx | 13 ++++++++++++- frontend/src/App.tsx | 13 ++++++++++++- lineageweave/__init__.py | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- 9 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 CHANGELOG.d/2.2.0-name-ask-after-priya-related.md diff --git a/CHANGELOG.d/2.2.0-name-ask-after-priya-related.md b/CHANGELOG.d/2.2.0-name-ask-after-priya-related.md new file mode 100644 index 00000000..37a463a4 --- /dev/null +++ b/CHANGELOG.d/2.2.0-name-ask-after-priya-related.md @@ -0,0 +1,4 @@ +# 2.2.0 Name Ask after Priya Nair related nodes are current + +Open Public post from the landed Demo Corp members and the popup names +Ask about this lineage after Priya Nair related nodes are current. diff --git a/CHANGELOG.md b/CHANGELOG.md index db129f0e..2c940659 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.2.0] - 2026-08-17 + +### Added + +- Opening Public post from the landed Demo Corp members now names the + next action after Priya Nair related nodes are current: **Ask about + this lineage**. Home list opens do not add that copy. No TEPP theta + is invented. No cutoff body is invented (ADR 0016). + ## [2.1.0] - 2026-08-17 ### Added diff --git a/CLAUDE.md b/CLAUDE.md index 6ead8380..bbe596a7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -57,5 +57,7 @@ popup names Keyman and evaluation as the next read. After landed 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. Changing the week first still focuses the report -period field. Mean θ stays on the period-report panel. +related nodes. After those related nodes land, the popup names Ask +about this lineage as the next read. 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 a01050f5..c60b3e50 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "2.1.0", + "version": "2.2.0", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx index 328cb4f2..10c16e9e 100644 --- a/frontend/src/App.test.tsx +++ b/frontend/src/App.test.tsx @@ -1488,6 +1488,7 @@ describe("App, authenticated", () => { ).not.toBeInTheDocument(); expect(screen.queryByRole("status", { name: "Keyman next action" })).not.toBeInTheDocument(); expect(screen.queryByRole("status", { name: "Related next action" })).not.toBeInTheDocument(); + expect(screen.queryByRole("status", { name: "Ask next action" })).not.toBeInTheDocument(); expect(screen.queryByText("Related to Ada West")).not.toBeInTheDocument(); expect(screen.queryByText("Related to Priya Nair")).not.toBeInTheDocument(); const popup = document.querySelector(".popup-panel"); @@ -2368,7 +2369,14 @@ describe("App, authenticated", () => { expect( relatedNext.compareDocumentPosition(landedRelated) & Node.DOCUMENT_POSITION_FOLLOWING, ).not.toBe(0); - expect(landedRelated.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe( + const askNext = await screen.findByRole("status", { name: "Ask next action" }); + expect(askNext).toHaveTextContent( + "Related nodes for Priya Nair are current. Ask about this lineage next.", + ); + expect( + landedRelated.compareDocumentPosition(askNext) & Node.DOCUMENT_POSITION_FOLLOWING, + ).not.toBe(0); + expect(askNext.compareDocumentPosition(affiliate) & Node.DOCUMENT_POSITION_FOLLOWING).not.toBe( 0, ); } finally { @@ -2646,6 +2654,9 @@ describe("App, authenticated", () => { "Priya Nair is the first related node. Read that person next.", ); expect(await screen.findByRole("heading", { name: "Related to Priya Nair" })).toBeInTheDocument(); + expect(await screen.findByRole("status", { name: "Ask next action" })).toHaveTextContent( + "Related nodes for Priya Nair are current. Ask about this lineage next.", + ); }); it("lets post_admin rebuild the period report", async () => { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 73af4fb9..0c32b3ef 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -203,7 +203,9 @@ function ChatPanel({ postId, accessToken }: { postId: string; accessToken: strin return (
-

Ask about this lineage

+

+ Ask about this lineage +

{!seededOnly && (
) : null} + {afterList && landFirstRelated && landedRelatedName && landedRelated !== null ? ( +

+ {relatedNodesCurrentNextAction(landedRelatedName)} +

+ ) : null} ); } diff --git a/lineageweave/__init__.py b/lineageweave/__init__.py index ffb131a7..d6f62810 100644 --- a/lineageweave/__init__.py +++ b/lineageweave/__init__.py @@ -55,4 +55,4 @@ "sentence_excerpts", ] -__version__ = "2.1.0" +__version__ = "2.2.0" diff --git a/pyproject.toml b/pyproject.toml index 33ff7e0d..07ad08f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lineageweave" -version = "2.1.0" +version = "2.2.0" description = "Reconstructs git-branch-style lineage DAGs from scattered short records using multi-channel score fusion and LLM adjudication." readme = "README.md" license = { text = "MIT" } diff --git a/uv.lock b/uv.lock index dd528a38..c75f5984 100644 --- a/uv.lock +++ b/uv.lock @@ -454,7 +454,7 @@ wheels = [ [[package]] name = "lineageweave" -version = "2.1.0" +version = "2.2.0" source = { virtual = "." } dependencies = [ { name = "certifi" },