Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.d/2.4.0-land-ask-under-next-action.md
Original file line number Diff line number Diff line change
@@ -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.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
"version": "2.3.0",
"version": "2.4.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
12 changes: 12 additions & 0 deletions frontend/src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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());
});

Expand Down
7 changes: 6 additions & 1 deletion frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,9 @@ function KeymanPanel({
{relatedNodesCurrentNextAction(landedRelatedName)}
</p>
) : null}
{afterList && landFirstRelated && landedRelatedName && landedRelated !== null ? (
<ChatPanel postId={postId} accessToken={accessToken} />
) : null}
</>
);
}
Expand Down Expand Up @@ -1631,7 +1634,9 @@ function PostDetailPopup({

<ActivityPanel postId={postId} accessToken={accessToken} />

<ChatPanel postId={postId} accessToken={accessToken} />
{!focusEventLineage && (
<ChatPanel postId={postId} accessToken={accessToken} />
)}
</>
)}
</div>
Expand Down
2 changes: 1 addition & 1 deletion lineageweave/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,4 @@
"sentence_excerpts",
]

__version__ = "2.3.0"
__version__ = "2.4.0"
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "lineageweave"
version = "2.3.0"
version = "2.4.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" }
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.